Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //costruisce il trasposto di un grafo dato in ingresso con rappresentazione a matrice di adiacenza(stessi vertici, archi invertiti)
- void *traspostoMat(void *grafo,FUNCTION *fun){
- grafoMat *g=(grafoMat*)grafo,
- *gt=NULL;
- int n=g->nv,
- i,j;
- for(i=0;i<n;i++) gt=insertEdgeMat(gt,fun,g->arrV[i]);
- for(i=0;i<n;i++){
- for(j=0;j<n;j++)
- if(g->mat[i][j]!=0) gt->mat[j][i]=g->mat[i][j];
- }
- return gt;
- }
- //costruisce il trasposto di un grafo dato in ingresso (stessi vertici, archi invertiti)
- void *traspostoList(void *grafo,FUNCTION *fun){
- grafoList *g=(grafoList*)grafo,
- *gt=NULL;
- edge *v,*curr;
- int n=g->nv,
- i,p;
- for(i=0;i<n;i++)
- gt=insertEdgeList(gt,fun,(g->adj[i])->key);
- for(i=0;i<n;i++){
- curr=gt->adj[i]; //vertice corrente nel trasposto
- v=(g->adj[i])->next; //primo elemento della lista di adiacenza del grafo di partenza
- while(v){
- p=posEdge(gt,v->key,fun); //ritorna la posizione di un vertice
- gt=insertAdjList(gt,p,i,curr->pesoArco,fun);
- v=v->next;
- }
- }
- return gt;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement