Ir para conteúdo


Revista PROGRAMAR – Edição 46 (Setembro 2014): Download já disponível!

- - - - -

Ajuda com lista simplesmente encadeada


  • Por favor inicie sessão para responder
2 respostas a este tópico

#1 AprendendoC

AprendendoC

    void

  • Membro
  • PipPip
  • 87 mensagens

Publicado 22 de Setembro de 2012 - 13:50

Buenas amigos!!

tenho um trabalho pra fazer da faculdade e estou meio com dificuldade em implementar uma função para inserir elementos no final de uma lista encadeada.

Código (C):
Lista* insercaoFinal(Lista* l, int num)
{
         Lista* novo = (Lista*)malloc(sizeof(lista));
         novo -> info = num;
         novo -> prox = NULL;
         return novo;
}

este meu codigo esta a inserir somente um numero ao final da lista...

#2 HappyHippyHippo

HappyHippyHippo

    Stack Overflow

  • Membro
  • PipPipPipPipPipPipPip
  • 10742 mensagens

Publicado 22 de Setembro de 2012 - 14:50

errado, a função simplesmente cria um nó da lista e não insere em lado nenhum

necessitas saber qual o local do fim da lista e actualizar os ponteiros para que o nó criado fique relacionado
tens de ter somente em conta que existe dois casos:
- a lista encontrasse vazia, logo o valor de l é um valor vazio
- a lista não se encontra vazia, logo terás de percorrer até ao fim e inserir ai

#3 BrunoT

BrunoT

    Boolean User

  • Membro
  • PipPipPip
  • 120 mensagens

Publicado 22 de Setembro de 2012 - 23:47

Assumindo que essa Lista* l trás o último elemento, que acho que sim ...

Código :
Lista* insercaoFinal(Lista* l, int num)
{
                 Lista* novo = (Lista*)malloc(sizeof(lista));
                 novo -> info = num;
                 novo -> prox = NULL;
                 l -> prox = novo;
                 return novo;
}

Se trazes sempre o último elemento contigo, não tens como percorrer a lista toda ... por isso acho que na estrutura de dados devias ter um apontador para o primeiro elemento.

Editado por BrunoT, 22 de Setembro de 2012 - 23:50.