Advertisement
Guest User

Untitled

a guest
Jan 22nd, 2017
120
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.37 KB | None | 0 0
  1. link a = malloc( sizeof (struct nodo));
  2. a->w = w;
  3. a->proximo = proximo;
  4. return a;
  5.  
  6. if(orientado==1)
  7. {
  8.  
  9.  
  10.  
  11. if ( v==w )
  12. {
  13.  
  14. printf("Nao e possivel adicionar laçon");
  15. return;
  16.  
  17. }
  18.  
  19.  
  20. if( w > G->V )
  21. {
  22. printf("Nao e possivel adicionar, este verticce nao existen");
  23. return;
  24. }
  25.  
  26.  
  27. //conto quantas arestas ja foram adicionadas e verifico se existe aresta paralela e também laço
  28. for (a = G->adj[v]; a != NULL; a = a->proximo)
  29. {
  30. qtda=qtda+1;
  31.  
  32. if ( v==w || a->w == v )
  33. {
  34.  
  35. printf("Nao e possivel adicionar aresta paralelan");
  36. return;
  37.  
  38. }
  39.  
  40.  
  41. }
  42.  
  43.  
  44.  
  45.  
  46. //verifico se ira adicionar uma aresta desde que não exceda a quantidade limite estabelecida
  47. if( G->A > qtda)
  48. {
  49. printf("v = %dn",v);
  50. G->adj[v] = Novonodo( w, G->adj[v]);
  51.  
  52. }
  53. else printf("Nao e possivel adicionar mais arestas ao vertice|%d|n", v);
  54.  
  55. }
  56. else
  57. {
  58. printf("passoun");
  59. //verifico se ira adicionar um laço
  60. if ( v==w )
  61. {
  62. printf("Nao e possivel adicionar lacon");
  63. return;
  64. }
  65.  
  66.  
  67. if( w > G->V )
  68. {
  69. printf("Nao e possivel adicionar, este verticce nao existen");
  70. return;
  71. }
  72.  
  73.  
  74. //conto quantas arestas ja foram adicionadas
  75. for (a = G->adj[v]; a != NULL; a = a->proximo)
  76. {
  77. qtda=qtda+1;
  78.  
  79. if(a->w==w)
  80. {
  81. printf("Nao sera possivel adicionar aresta paralelan" );
  82. return;
  83. }
  84.  
  85. }
  86.  
  87. //verifico se ira adicionar uma aresta desde que não exceda a quantidade limite estabelecida
  88. if( G->A > qtda)
  89. {
  90.  
  91. //caso o grafo não seja orientado se eu tendo |v|->[w], terei também de |w|->[v]
  92.  
  93. G->adj[v] = Novonodo( w, G->adj[v]);
  94. G->adj[w] = Novonodo( v, G->adj[w]);
  95.  
  96.  
  97. }
  98. else printf("Nao e possivel adicionar mais arestas ao vertice|%d|n", v);
  99.  
  100.  
  101. }
  102.  
  103. link a;
  104.  
  105. int i=1;
  106. while(i<=g->V)
  107. {
  108. printf("|%d|-",i);
  109.  
  110. for(a=g->adj[i]; a!=NULL; a=a->proximo) printf("[%d,p%d]->", a->w,a->peso);
  111.  
  112.  
  113. printf("0n");
  114. i++;
  115. }
  116.  
  117. printf("n");
  118.  
  119. lista *novo = malloc( sizeof (lista));
  120. novo->v=v;
  121. novo->proximo = proximo;
  122.  
  123. return novo;
  124.  
  125. }
  126. //caso não encontro meu elemento retorno o própria lista
  127. if(atual == NULL) return q;
  128. //caso o anterior seja null, então apenas precisamos apontar para o próximo elemento da lista
  129. if(ant==NULL) q=atual->proximo;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement