Advertisement
Guest User

Untitled

a guest
Oct 31st, 2014
159
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.18 KB | None | 0 0
  1. //alloca inizializza a NULL n vertici e le liste di adiacenza di un grafoList
  2. grafoList *initGrafoList(int n){
  3.     grafoList *g;
  4.     int i;
  5.     g=(grafoList*)malloc(sizeof(grafoList));
  6.     g->adj=(edge**)malloc(n*sizeof(edge*));
  7.     g->nv=n;
  8.     g->allocati=n;
  9.     for(i=0;i<n;i++){
  10.         g->adj[i]=(edge*)malloc(sizeof(edge));
  11.         (g->adj[i])->next=NULL;
  12.         (g->adj[i])->key=NULL;
  13.         (g->adj[i])->pesoArco=0;
  14.     }
  15.     return g;
  16. }
  17.  
  18.  
  19. //inserisce un vertice nel grafo
  20. void *insertEdgeList(void *grafo,FUNCTION *fun, void *k){
  21.     grafoList *g=(grafoList*)grafo;
  22.  
  23.     if(g==NULL){
  24.         grafoList *G=initGrafoList(1);
  25.         (G->adj[0])->key=malloc(fun->all(k));
  26.         (G->adj[0])->key=k;
  27.         return G;  
  28.     }
  29.     if(existEdgeList(g,k,fun)==0){
  30.        
  31.         if(g->nv >= g->allocati){
  32.             g->allocati=g->allocati*2;  //rialloco il doppio dello spazio precedentemente allocato
  33.             g->adj=realloc(g->adj,g->allocati*sizeof(edge));
  34.         }
  35.         g->adj[g->nv]=(edge*)malloc(sizeof(edge));  //gli array partono da 0 perciò incremento dopo nv
  36.         (g->adj[g->nv])->key=malloc(fun->all(k));
  37.         (g->adj[g->nv])->key=k;
  38.         (g->adj[g->nv])->next=NULL;
  39.         (g->adj[g->nv])->pesoArco=0;
  40.         g->nv++;
  41.     }
  42.     else
  43.         printf("Vertice gia' presente\n");
  44.     return g;
  45. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement