Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- typedef struct dati
- {
- char nome [20];
- int peso;
- }dati;
- //typedef dati *pdati;
- typedef struct vertice
- {
- dati persona;
- struct vertice *next;
- }vertice;
- typedef vertice *pvertice;
- void crea_vertice(pvertice grafo[], int size)
- {
- pvertice appoggio;
- int i;
- for(i=0;i<size;i++)
- {
- appoggio=calloc(1,sizeof(vertice));
- printf("\nInserisci il nome: ");
- fflush(stdin);
- fgets(appoggio->persona.nome,20,stdin);
- printf("\nInserisci il peso di questo veritce: ");
- scanf("%d",&appoggio->persona.peso);
- grafo[i]=appoggio;
- }
- }
- void stampa_vertice (pvertice grafo[],int size)
- {
- int i;
- for(i=0;i<size;i++)
- {
- printf("\n__________\n");
- printf("\nNOME: %s",grafo[i]->persona.nome);
- printf("\n");
- printf("Eta': %d",grafo[i]->persona.peso);
- }
- }
- void crea_arco (pvertice grafo[], pvertice grafo_i,int size,int i)
- {
- pvertice appoggio;
- int scelta, j,cont=0;
- char vertice[20];
- printf("\nVuoi un vertice adiacente a al %d vertice=> digita[1]-----Per uscire da inserimento[0]",i+1);
- scanf("%d",&scelta);
- while(scelta!=0&&cont<=size)
- {
- printf("\ninserisci il nome da collegare al %d vertice",i+1);
- fflush(stdin);
- fgets(vertice, 20, stdin);
- for (j=0;j<size;j++)
- {
- if(strcmp(vertice,grafo[j]->persona.nome)==0)
- {
- appoggio=calloc(1,sizeof(struct vertice));
- appoggio->persona=grafo[j]->persona;
- appoggio->next=NULL;
- grafo_i->next=appoggio;
- grafo_i=appoggio;
- j=size;
- cont ++;
- }
- }
- printf("\nContinuare ad inseire [1]-----Uscire da inserimento[0]");
- scanf("%d",&scelta);
- }
- }
- void stampa_tot(pvertice grafo_i)
- {
- while(grafo_i!=NULL)
- {
- printf("\t%s=>",grafo_i->persona.nome);
- grafo_i=grafo_i->next;
- }
- printf("NULL");
- }
- int main()
- {
- pvertice *grafo;
- int size,i;
- printf("quanto sara' grande il grafo?");
- scanf("%d",&size);
- grafo=calloc(size, sizeof(vertice));
- crea_vertice(grafo, size);
- stampa_vertice(grafo, size);
- for(i=0;i<size;i++)
- {
- crea_arco(grafo,grafo[i],size,i);
- }
- for(i=0;i<size;i++)
- {
- printf("\n");
- stampa_tot(grafo[i]);
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement