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?
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.
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?
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.
Bom tenho aula amanhã e pergunto ao professor. O trabalho já seguiu incompleto. Obrigado pelas ajudas.