Ir para conteúdo
Fórum Script Brasil

Micael Pimentel

Membros
  • Total de itens

    2
  • Registro em

  • Última visita

Sobre Micael Pimentel

Micael Pimentel's Achievements

0

Reputação

  1. Puxa vida, então acho que dever ser algum problema na execução no meu computador ou compilador eu acho. Em casa uso o MinGW no Windows, contudo fui rodar esse mesmo código na faculdade e funcionou normal também. Obrigado pela resposta. :D
  2. Olá galera, tudo bem, espero está fazendo esse tópico corretamente pois sou novo aqui... Enfim, é o seguinte, estou com um problema no meu código em C que consiste em inserir elementos numa lista encadeada, mas os elementos que são inseridos devem ser posicionados na lista em ordem crescente. Por exemplo, eu insiro 10, depois insiro 20 e depois insiro 16, e a lista deve ficar assim: 10, 16, 20. Entenderam? Bem até aí tudo bem, meu código está funcionando, mas o problema é quando eu vou inserir outro elemento menor que o primeiro da lista. Aproveitando o exemplo acima, se eu for inserir o 7 nessa lista, meu código não funciona como eu esperaria. Aí é nessa parte que eu estou com problemas. Aqui a função que fiz para inserir, o parêmetro dela é a cabeça da lista na qual quero inserir os elementos: void inserir(lista **p){ lista *atual, *novo, *anterior; int num; novo = (lista *) malloc(sizeof(lista)); atual = *p; anterior = NULL; printf("Insira um valor: "); scanf("%d", &num); novo->valor = num; if(atual == NULL){ novo->prox = NULL; *p = novo; } else{ while(atual != NULL && atual->valor < num){ anterior = atual; atual = atual->prox; } novo->prox = atual; if(anterior == NULL){ *p = novo; } else{ anterior->prox = novo; } } } Então, creio que o problema esteja nessas últimas linhas da função, deve haver alguma coisa muito muito errada acontecendo aí e eu não consigo notar. Qualquer ajuda será bem vinda, abraços.
×
×
  • Criar Novo...