void InsereRecursivo(TGrafo *T, int origem, int destino){ TGrafo aux = (*T); while (aux != NULL){ if((aux)->codigo == origem){ //printf("Vertice %d", aux->codigo); InsereLista((aux)->lista, destino); //printf("Inseriu\n"); return; } //printf("Erro "); aux = aux->ProxNo; } }
void listaenc(int op){ switch(op){ case 0: exit(1); break; case 1: LVazia(); break; case 2: ImprimeLista(); break; case 3: int d; printf("Novo Elemento:\n"); scanf("%d",&d); InsereLista(d); break; case 4: int x; printf("Buscar Elemento:\n"); scanf("%d",&x); PesquisaLista(x); break; case 5: int b; printf("Remover Elemento:\n"); scanf("%d",&b); RemoveLista(b); break; default: printf("Comando invalido\n\n"); } }
void menu(ListaLinear *L) { int i,status_menu; status_menu=0; do { printf("\n"); printf("\n"); printf("\t\t---------------------Lista de contatos---------------------\n\n"); printf("Informe uma das seguintes opções:\n"); printf("1 - Criar lista\n"); printf("2 - Adicionar Contato\n"); printf("3 - Enumerar Contato\n"); printf("4 - Pesquisar Contatos por nome\n"); printf("5 - Remover Contato com base na posicao\n"); printf("6 - Remover Contato com base no nome\n"); printf("7 - Tamanho da lista\n"); printf("8 - Remover lista\n"); printf("9 - Sair\n"); printf("Opção: "); scanf("%d",&i); switch(i) { case 1: { if (!L) { if (L=(ListaLinear *) malloc (sizeof(ListaLinear))) {ConstroiLista(L);printf("\t\tLista criada.\n\n");} else{printf("\t\tNão foi possível criar lista.\n\n");} }else{printf("\t\tLista já está criada.\n\n");} break; } case 2: { if (L!=NULL) { char nome[max_tamanho_nome],telefone[max_tamanho_telefone]; printf("Informe o nome: ");scanf("%50s",nome); printf("Informe o telefone: ");scanf("%11s",telefone); if (InsereLista(L,nome,telefone,TamanhoLista(L)+1)){printf ("\n\t\tContato inserido com sucesso.\n\n");} else{printf("\t\tNão foi possível inserir contato na lista.\n\n");} }else{printf("\t\tLista inexistente.\n\n");} break; } case 3: { if (L) { if (L->inicio!=NULL){EnumeraLista(L);}else{printf("\t\tLista está vazia.\n\n");} } else{printf("\t\tLista inexistente.\n\n");} break; } case 4: { if (L) { if (L->inicio!=NULL) { char nome[max_tamanho_nome];int pos; printf("Informe o nome: ");scanf("%50s",nome); pos=BuscaNaoOrdenadaLista(L,nome); if (pos!=-1){printf("\n\t\tContato encontrado na posição %d.\n\n",pos);} else{printf("\n\t\tContato não foi encontrado na lista.\n\n");} }else{printf("\t\tLista está vazia.\n\n");} }else{printf("\t\tLista inexistente.\n\n");} break; } case 5: { if(L) { if (L->inicio!=NULL) { int i; printf("Informe a posição a ser removida: "); scanf("%d",&i); RemovePosicaoEm(L,i); }else{printf("\t\tLista está vazia.\n\n");} }else{printf("\t\tLista inexistente.\n\n");} break; } case 6: { if (L) { if (L->inicio!=NULL) { char nome[max_tamanho_nome];int pos; printf("Informe o nome: ");scanf("%50s",nome); pos=BuscaNaoOrdenadaLista(L,nome); if (pos!=-1){RemovePosicaoEm(L,pos);} else{printf("\n\t\tContato não foi encontrado na lista.\n\n");} }else{printf("\t\tLista está vazia.\n\n");} }else{printf("\t\tLista inexistente.\n\n");} break; } case 7: { if (L){printf("\n\t\tTamanho atual da lista: %d\n\n",TamanhoLista(L));} else{printf("\t\tLista inexistente.\n\n");} break; } case 8: { if (L) { char c; while ( (c=getchar())!='s' && c!='S' && c!='n' && c!='N' ) { printf("\n\t\tDeseja remover lista (s/S/n/N)? "); } if (c=='s' || c=='S') { if (L->inicio!=NULL) {DestroiLista(L);printf("\n\t\tLista removida com sucesso.");} else{printf("\n\t\tLista está vazia.");} } }else{printf("\t\tLista inexistente.\n\n");} break; } case 9: {printf("\t\tEncerrando programa.\n\n");status_menu=1;break;} default: printf("\t\tOpção inválida.\n\n");break; } }while(status_menu==0); exit(0); }