int main(){ Fila* f; int tam, op; P("Informe o tamanho da fila circular: "); scanf("%d", &tam); f = criaFila(tam); do{ system("cls"); P("Escolha uma das opcoes abaixo --\n"); P("\t1. Inserir um elemento na fila circular;\n"); P("\t2. Remover um elemento da fila circular;\n"); P("\t3. Fila vazia ?\n"); P("\t4. Mostrar a fila circular;\n"); P("\t5. Sair.\n"); P("Resposta escolhida: "); scanf("%d", &op); switch(op){ case 1:{ int valor; P("Digite o valor a ser inserido na fila circular: "); scanf("%d", &valor); insereFila(f, valor); } break; case 2: { if(filaVazia(f)) P("Fila vazia.\n"); else printf("Valor removido: %d.\n", removeFila(f)); getch(); } break; case 3: { if(filaVazia(f)) P("Fila vazia.\n"); else P("Fila nao esta vazia.\n"); getch(); } break; case 4: mostraFila(f); break; case 5: exit(0); break; default : { P("Opcao invalida.\n"); getch(); } break; } }while(op != 5); getch(); return 0; }
//Função responsável por realizar a busca em largura no grafo int bfs(){ // Cria um vetor para marcar quais vértices já foram visitados int *visited, n; visited = (int *)malloc(numVertices * sizeof(int)); if(visited == NULL){printf("Falta de memoria!\n");exit(0);} for(int i = 0; i < numVertices; i++){ visited[i] = 0; } // Cria a fila para executar a busca em largura struct fila *q = NULL, *fim = NULL; q = insereFila(q, &fim, inicio); visited[inicio] = 1; pai[inicio] = -1; // Inicia a busca em largura while (q != NULL){ int u = q->val; q = removeFila(q); for (int v=0; (v<numVertices); v++){ if (visited[v]==0 && redeResidual[u][v] > 0){ q = insereFila(q, &fim, v); pai[v] = u; visited[v] = 1; if(v == destino){ n = visited[destino]; free(visited); q = limpaFila(q, &fim); return (n == 1); } } } } // Retorna verdadeira caso encontre um novo caminho da superorigem até o superdestino // Retorna falso, caso contrário n = visited[destino]; free(visited); q = limpaFila(q, &fim); return (n == 1); }