Ir ao conteúdo
  • Cadastre-se

Carol Alves

Membro Júnior
  • Posts

    5
  • Cadastrado em

  • Última visita

  1. Pessoal, agora resolvi o problema do excluir 1, eu estava pulando o no inicial, segue código correto: A estrutura case fica: Tudo resolvido, não tá da forma mais inteligente do mundooo hahaha mas tá funcionando, obrigada pessoal!
  2. Já tô fazendo vários ajustes com os feedbacks de vocês. Consegui arrumar a função excluir tudo, ficou assim: Na função principal coloquei:
  3. @codigo rápido sobre alguém fazer pra mim, não é a itenção, por isso não trouxe o enunciado do que estou tentando fazer, trouxe já o código que eu desenhei e está depurando, mas apresenta falhas Usei o fórum porque algumas vezes alguém que já trabalha com listas encadeadas poderia me dar um insight que me ajudaria a matar a charada de onde está o erro, porque observando os erros já percebi que acontece no geral envolvendo o primeiro ponteiro. @codigo rápido super obrigadaaa, eu já tô há dias nesse código, qualquer insight que me dê uma luz de onde tá meu erro é super bem vindo
  4. @codigo rápido oi, o buscar quando o número está na lista funciona, por exemplo: Lista= 1, 2, 3, 4 Buscar 4 Retorno: "O número buscado está na posição 4" O problema é quando o número não existe na lista, por exemplo Buscar 5 Retorno: "O número buscado está na posição 5" Eu entendo porque isso acontece, porque o programa entrou no laço do While 5 vezes até dar null, por isso ele tá apresentando esse erro, o ponto é que eu não sei como fazer o programa entender que se ele não achar o número buscado ele não deve ter um contador.
  5. Olá pessoal, tudo bem? Preciso de uma ajuda para descobrir o erro, se puderem também aceito material de estudo, o que acontece é que eu já rodei esse código de cima a baixo e ele continua dando problema na função: Buscar: mesmo quando não existe o valor ele retorna uma posição; Excluir: ele não exclui o valor quando ele está na primeira posição; Excluir tudo: após usar quando peço para imprimir o programa dá erro #include<stdio.h> #include<stdlib.h> //criação da lista - recebe um inteiro e tem um ponteiro //*ini é o ponteiro inicial (um ponteiro que aponta para outro ponteiro) struct No{ int dado; struct No *prox; } *ini=NULL; void inserir_ini(int num){ struct No *novo; // nova estrutura com características de No novo = malloc(sizeof(No())); //pegar um espaço de memoria novo->dado=num; //informação de novo agora é num novo->prox=ini; //ponteiro de novo aponta para ini (primeiro da lista) último da lista ini=novo; // ponteiro de ini aponta para novo } void inserir_fim(int num){ struct No *aux =ini, *novo; // novo ponteiro e nova estrutura com características de No novo = malloc(sizeof(No())); //pegar um espaço de memoria novo->dado=num; //informação de novo agora é num novo->prox=NULL; //ponteiro de novo aponta para NULL if(aux==NULL){ ini=novo; //se não tinha nada na lista, ini apontava para null, logo aux aponta para null, nesse caso ini vai apontar para o primeiro da lista } else{ while(aux->prox !=NULL){ aux=aux->prox; } aux->prox=novo; //procura o último da lista e conecta o novo nele } } void imprimir(){ struct No*novo; //criou um ponteiro igual ao no if (ini == NULL) { printf("--- fim da lista ---\n\n"); return; } novo = ini; while (novo !=NULL) { printf("Info = %d\n",novo->dado); novo = novo->prox; } printf("--- fim da lista ---\n\n"); } void buscar (int busca, struct No*ini){ int contador=1; struct No *q; q = ini; while (q != NULL && q->dado != busca) { q = q->prox; contador=contador+1; } printf("O valor inserido está na posição %d",contador); } void alterar(int alvo, int alvo2, struct No*ini){ struct No *q; q = ini; while (q != NULL && q->dado != alvo) { q = q->prox; } if (q != NULL) { q->dado=alvo2; } } void excluir(int alvo, struct No*ini){ struct No *p,*q; p=ini; q=ini->prox; if (q->dado==alvo) while (q != NULL && q->dado != alvo) { p = q; q = q->prox; } if (q != NULL) { p->prox = q->prox; free (q); } } void excluirtudo(struct No*ini){ struct No *aux; while (ini!= NULL) { aux = ini; ini=aux->prox; free(aux); } ini->prox=NULL; } int main(){ int op=1, num, num2,busca; while (op!=0){ printf("\n\nMenu \n1-Insere no inicio; \n2-Insere no fim; \n3-Imprime; \n4-Buscar \n5-Alterar \n6-Excluir um \n7-Excluir tudo \n0-Finaliza \n\n Digite a opcao: "); scanf("%d", &op); switch(op){ case 1: printf("\nInsira um numero: "); scanf("%d",&num); inserir_ini(num); break; case 2: printf("\nInsira um numero: "); scanf("%d",&num); inserir_fim(num); break; case 3: imprimir(); break; case 4: printf("Insira o numero que deseja buscar:"); scanf("%d",&busca); buscar(busca,ini); break; case 5: printf("\nInsira o numero que deseja substituir: "); scanf("%d",&num); printf("\nInsira o novo numero: "); scanf("%d",&num2); alterar(num,num2, ini); break; case 6: printf("\nInsira o numero que deseja excluir: "); scanf("%d",&num); excluir(num, ini); break; case 7: excluirtudo(ini); printf("\nLista deletada."); break; } } }

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...