1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

reverse list em C!

Discussão em 'Programação' iniciada por pmcosta, 4 de Novembro de 2007. (Respostas: 4; Visualizações: 634)

  1. Boa noite,

    estou a tentar implementar uma função que me "reverta" a ordem de um struc:
    estou a usar :
    mas a lista fica só com o primeiro valor (o ultimo da lista original...

    Alguém me pode ajudar?
     
  2. HecKel

    HecKel The WORM

    Pelo que entendi do teu código, falha logo no primeiro ciclo, tu dizes que "segue" enquanto houver ptr->next, mas dentro do ciclo estás a alterar o conteúdo do ptr->next..., quando voltas ao while já não tens o ptr->next que esperavas encontrar.

    A sugestão que te faço é no while em vez de andares a percorrer o ptr, percorreres o pList. E definires o ptr como uma lista vazia.

    Mesmo assim estou na dúvida se funcionará..., não analisei bem o teu código.
     
  3. quando volto ao while tenho o valor que esperava encontrar.
    adicionando a linha
    no inicio do ciclo obtenho os valores por ordem na consola.
    excluindo o ultimo que é o que fica.
    Podes-me ajudar?
     
  4. reise

    reise Power Member

    O problema é que tu só tens apontadores para a frente.
    Um possivel algoritmo é o seguinte:

    1- fazer uma cópia da lista.
    2- percorreres a lista até ao último elemento guardando o penúltimo endereço do next
    3- quando chegares ao último colocas o valor encontrado na posição i da lista de retorno e colocas o apontador do penúltimo para null
    4- volta ao ponto 2 até a lista só conter um elemento
    5- copia esse valor para a última posição da cópia e retorna

    Espero que tenhas percebido, agora não tenho aqui nenhum compilador de C para fazer e experimentar o código.
     
  5. Bom tenho aula amanhã e pergunto ao professor.
    O trabalho já seguiu incompleto.
    Obrigado pelas ajudas.
     
    Última edição: 4 de Novembro de 2007

Partilhar esta Página