int main(){ int i, base = 2, expoente = 20; int qtd = pow(base, expoente); srand( (unsigned)time(NULL) ); for(i = 1; i <= qtd; i++) listaAdd(&inicio, rand()); //Chamando a questão e inserindo outro elemento na lista diferente de NULL inserirInicio(&inicio, 0); //imprimir(inicio); return 0; }
///------------------------------------------------------------------------- /// Acessar a Partir do Fim ///------------------------------------------------------------------------- CLIENTE * acessarAPartirFim(LISTA ** lista, int pos) { int cont=0; LISTA * novo = (LISTA*)calloc (1,sizeof(LISTA)); LISTA * aux = *lista; CLIENTE cl; CLIENTE *cp; novo = criarLista(); if (*lista == NULL) { return NULL; } else { while(aux!=NULL) { cl = aux->info; inserirInicio(&novo, cl); aux=aux->prox; } } aux=novo; while(aux!=NULL && cont!=pos) { aux=aux->prox; cont++; } if (cont!=pos) { return NULL; } else { return &aux->info; } destruir(&novo); }
///------------------------------------------------------------------------- /// MAIN ///------------------------------------------------------------------------- int main() { int op=0; int posicao=0; char vetNome[30]; LISTA *lista; CLIENTE dl; CLIENTE *cp; lista = criarLista(); do { printf("1 - Criar Lista\n"); printf("2 - Inserir Inicio\n"); printf("3 - Inserir Final\n"); printf("4 - Inserir Posicao\n"); printf("5 - Acessar a partir Inicio\n"); printf("6 - Acessar a partir Fim\n"); printf("7 - Listar do inicio ao fim\n"); printf("8 - Listar do fim ao inicio\n"); printf("9 - Eliminar\n"); printf("10 - Buscar nome Retorna endereco\n"); printf("11 - Buscar nome Retorna posicao\n"); printf("12 - Tamanho da Lista\n"); printf("13 - Destruir\n"); printf("14 - Sair\n"); printf("15 - Salvar\n"); printf("16 - Ler\n"); printf("opcao: "); scanf("%d", &op); switch(op) { case 1: //Criar Lista lista = criarLista(); break; case 2: // Inserir Inicio printf("nome: "); scanf("%s", dl.nome); printf("idade: "); scanf("%d", &dl.idade); inserirInicio(&lista, dl); break; case 3: // Inserir Final printf("nome: "); scanf("%s", dl.nome); printf("idade: "); scanf("%d", &dl.idade); inserirFinal(&lista, dl); break; case 4: // Inserir Posicao printf("nome: "); scanf("%s", dl.nome); printf("idade: "); scanf("%d", &dl.idade); printf("posicao: "); scanf("%d", &posicao); inserirPosicao(&lista, posicao, dl); break; case 5: // Acessar a partir Inicio printf("posicao: "); scanf("%d", &posicao); cp = acessarAPartirInicio(&lista, posicao); if (cp!=NULL) { printf("nome: %s\n", cp->nome); printf("idade: %d\n", cp->idade); } else{ printf("posicao nao existe\n"); } break; case 6: // Acessar a partir Fim printf("posicao: "); scanf("%d", &posicao); cp = acessarAPartirFim(&lista, posicao); if (cp!=NULL) { printf("nome: %s\n", cp->nome); printf("idade: %d\n", cp->idade); } else{ printf("posicao nao existe\n"); } break; case 7: // Listar do Inicio ao Fim listarInicioFim(&lista); break; case 8: // Listar do Fim ao Inicio listarFimInicio(&lista); break; case 9: // Eliminar Posição printf("posicao: "); //scanf("%s", &posicao); scanf("%d", &posicao); eliminarPosicao(&lista, posicao); break; case 10: // Buscar e retornar Endereco printf("nome: "); scanf("%s", &vetNome); cp = buscarEnderecoNome(vetNome, &lista); if (cp!=NULL) { printf("nome: %s\n", cp->nome); printf("idade: %d\n", cp->idade); } else{ printf("nao existe o nome\n"); } break; case 11: // Buscar e retornar Posicao printf("nome: "); scanf("%s", &vetNome); posicao = buscarPosicaoNome(vetNome, &lista); if (posicao >= 0) { printf("posicao: %d\n", posicao); cp = acessarAPartirInicio(&lista, posicao); printf("nome: %s\n", cp->nome); printf("idade: %d\n", cp->idade); } else{ printf("nao existe o nome\n"); } break; case 12:// Tamanho da lista printf("tamanho: %d\n\n", tamanho(&lista)); // nao precisa passar por referencia break; case 13:// Destruir Lista destruir(&lista); break; case 15:// Salvar salvar(&lista); break; case 16:// Ler ler(&lista); break; } }while(op!=14); return 0; }