Guest User

Untitled

a guest
Feb 18th, 2018
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.45 KB | None | 0 0
  1. #include <stdio.h>
  2.  
  3. g->Vet[v1].final->prox = (celula*)malloc (sizeof(celula));
  4. g->Vet[v1].final = g->Vet[v1].final->prox;
  5. g->Vet[v1].final->Item = aux;
  6. g->Vet[v1].final->prox = NULL;
  7. g->NumArestas++;
  8.  
  9. }
  10.  
  11. printf (" Ligacao: %d Peso: %d Chave %d", aux->Item.Vertice, aux->Item.Peso, aux->Item.Chave_Busca);
  12. aux = aux->prox;
  13. }
  14. }
  15. printf ("n");
  16. }
  17.  
  18. (*tempo)++;
  19. d[i] = (*tempo);
  20. //função empilhar
  21. printf ("Vertice: %2d Tempo de descoberta: %2d Cinzan", i, d[i]);
  22. inserir_pilha(i, &pilha);
  23. printf ("Funcao Inserir: %dn", i);
  24.  
  25. if (!Lista_Adj_Vazia(&i, g) && aux->Item.Vertice != bus){
  26. aux = Primeiro_Lista_Adj(&i, g);
  27.  
  28.  
  29. while (!FimLista){
  30. Prox_Adj(&i, &v, &peso, &aux, &FimLista);
  31. if (Cor[v] == branco){
  32. antecessor [v] = i;
  33. Visita_Dfs(v, g,tempo, d, t, Cor, antecessor, bus);
  34. printf ("Retorna para o vertice anterior %dn", i);
  35. }
  36. }
  37.  
  38. printf ("nnEncontrounn");
  39. imprime_pilha(&pilha);
  40. Copia(&pilha);
  41. imprime_pilha (&teste);
  42.  
  43. Cor[i] = preto;
  44. (*tempo)++;
  45. t[i] = (*tempo);
  46. // aqui deve desempilhar
  47. printf ("Vertice: %2d Tempo de termino: %2d Preton", i, t[i]);
  48. printf ("Funcao Remover %dn", i);
  49. remover_pilha(&pilha);
  50. printf ("Tamanho atual da pilha: %dn", tamanho(&pilha));
  51.  
  52. cores Cor[MaxNumVert+1];
  53. tempo =0;
  54. printf ("Informe o peso que deseja buscar: ");
  55. scanf ("%d",&bus);
  56. for (i=0; i<=g->NumVertices-1; i++){
  57. Cor[i] = branco;
  58. antecessor[i] = -1;
  59. }
  60. for (i=0; i<=g->NumVertices-1; i++){
  61. //chama a função Visita DFS
  62. if (Cor[i] == branco){
  63. Visita_Dfs(i, g, &tempo, d, t, Cor, antecessor, bus);
  64. }
  65. }
  66.  
  67. grafo Grafo;
  68.  
  69. menu:
  70. printf ("<1> Inserir Aresta no Grafon");
  71. printf ("<2> Remover Aresta no Grafon");
  72. printf ("<3> Verificar a Existencia de Uma Arestan");
  73. printf ("<4> Imprimir Grafon");
  74. printf ("<5> Realizar Busca em Profundidaden");
  75. printf ("<7> Obter Caminho de buscan");
  76. printf ("<6> Destruir Grafon");
  77. printf ("<0> Sairn");
  78. printf ("Informe Uma Opcao: ");
  79. scanf ("%d", &op);
  80. printf ("n");
  81. switch (op){
  82. case 1:{
  83. printf ("Informe o vertice 1: ");
  84. scanf ("%d", &v1);
  85. printf ("informe o Vertice 2: ");
  86. scanf ("%d", &v2);
  87. printf ("Informe o Peso: ");
  88. scanf ("%d", &peso);
  89. printf ("Informe a chave de busca dessa ligação: ");
  90. scanf ("%d", &Enc);
  91. Insere_Aresta(v1, v2, peso, Enc, &Grafo);
  92. if (dir == 2){
  93. Insere_Aresta(v2, v1, peso, Enc, &Grafo);
  94. }
  95. printf ("nAresta Adicionada com Sucesso!n");
  96. getch ();
  97. system ("CLS");
  98. goto menu;
  99. }
  100. case 2:{
  101. //Chamada da funcao Retira_Aresta(int v1, int v2, int peso, grafo *g)
  102. printf ("Informe o Primeiro Vertice que Deseja Remover a Ligacao: ");
  103. scanf ("%d", &v1);
  104. printf ("Informe o Primeiro Vertice que Deseja Remover a Ligacao: ");
  105. scanf ("%d", &v2);
  106. printf ("Realmente deseja Remover? <1> Sim <2> Nao: ");
  107. scanf ("%d", &peso);
  108. if (peso == 1 ){
  109. Retira_Aresta(v1, v2,&Grafo );
  110. if (dir == 2){
  111. Retira_Aresta(v2, v1,&Grafo );
  112. }
  113. }
  114. printf ("n");
  115. printf("Aresta Removida com Sucesso!n");
  116. getch();
  117. system ("CLS");
  118. goto menu;
  119.  
  120. }
  121. case 3:{
  122. printf ("Informe o Primeiro Vertice que Deseja Verificar: ");
  123. scanf ("%d", &v1);
  124. printf ("Informe o Segundo Vertice que Deseja Verificar: ");
  125. scanf ("%d", &v2);
  126. Enc = Existe_Aresta(v1, v2, &Grafo);
  127. if (Enc == 1){
  128. printf ("Existe Aresta Entre os Verticesn");
  129. }else{
  130. printf ("Nao Existe Aresta Entre os Verticesn");
  131. }
  132. getch();
  133. system ("CLS");
  134. goto menu;
  135. }
  136. case 4:{
  137. printf ("n");
  138. Imprime_Grafo(&Grafo);
  139. getch ();
  140. system("CLS");
  141. goto menu;
  142. }
  143. case 5:{
  144.  
  145. getch();
  146. system ("CLS");
  147. goto menu;
  148. }
  149. case 6:{
  150.  
  151. Libera_Grafo(&Grafo);
  152. printf ("Memoria do Grafo Limpan");
  153. getch();
  154. system ("CLS");
  155. break;
  156. }
  157. case 7:{
  158. printf("Tamanho de Pilha %dn", teste.tamanho);
  159. imprime_pilha(&teste);
  160. getch();
  161. system ("CLS");
  162. goto menu;
  163. }
  164. case 0:{
  165.  
  166. break;
  167. }
  168. default :{
  169. printf ("Informe uma opcao validan");
  170. getch ();
  171. system ("CLS");
  172. goto menu;
  173. }
  174. }
  175.  
  176. return 0;
Add Comment
Please, Sign In to add comment