Advertisement
Guest User

Untitled

a guest
Oct 31st, 2014
163
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.04 KB | None | 0 0
  1. //costruisce il trasposto di un grafo dato in ingresso con rappresentazione a matrice di adiacenza(stessi vertici, archi invertiti)
  2. void *traspostoMat(void *grafo,FUNCTION *fun){
  3.     grafoMat *g=(grafoMat*)grafo,
  4.              *gt=NULL;
  5.     int n=g->nv,
  6.         i,j;
  7.  
  8.     for(i=0;i<n;i++) gt=insertEdgeMat(gt,fun,g->arrV[i]);
  9.  
  10.     for(i=0;i<n;i++){
  11.         for(j=0;j<n;j++)
  12.             if(g->mat[i][j]!=0) gt->mat[j][i]=g->mat[i][j];    
  13.     }
  14.    
  15.     return gt;
  16. }
  17.  
  18.  
  19. //costruisce il trasposto di un grafo dato in ingresso (stessi vertici, archi invertiti)
  20. void *traspostoList(void *grafo,FUNCTION *fun){
  21.     grafoList *g=(grafoList*)grafo,
  22.               *gt=NULL;
  23.     edge *v,*curr;
  24.     int n=g->nv,
  25.         i,p;
  26.  
  27.     for(i=0;i<n;i++)
  28.     gt=insertEdgeList(gt,fun,(g->adj[i])->key);
  29.  
  30.     for(i=0;i<n;i++){
  31.         curr=gt->adj[i];                //vertice corrente nel trasposto
  32.         v=(g->adj[i])->next;            //primo elemento della lista di adiacenza del grafo di partenza
  33.         while(v){
  34.             p=posEdge(gt,v->key,fun);   //ritorna la posizione di un vertice
  35.             gt=insertAdjList(gt,p,i,curr->pesoArco,fun);
  36.             v=v->next;
  37.         }
  38.     }
  39.     return gt;
  40. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement