Como inverter lista linear duplamente encadeada

0 respostas
R

E ae pessoal, beleza?

Estou tentando resolver um exercício da lista da faculdade, mas esse ta tenso hem…rsrsr.

É o seguinte eu tenho que inverter os nós de uma lista linear duplamente encadeada, tenho que trocar o último nó com o primeiro, o segundo com o penúltimo, o terceiro com o antepenúltimo e assim sucessivamente.

Deve-se trocar o valor dos campos ant e prox do nó pra fazer tal inversão. Segue abaixo o código que eu fiz:

public void inverter (){   
       no p,q,aux1,aux2; int n=0,i=0;
       p=inicio;
       
       while (p.getProx()!=null){
           p=p.getProx();           
           n++;
       }
       
       
       q=p; //q recebe final
       p=inicio;
       n=n/2;
       
       
       while (i<n){
           aux1=p;           
           p.setProx(q.getProx());
           p.setAnt(q.getAnt());
           aux2=q; 
           q.setProx(aux1.getProx());
           q.setAnt(aux1.getAnt());
           p=aux1.getProx();
           q=aux2.getAnt();
           
           i++;     
           
       }      
       
   }

Então pessoal quais os problemas ai da minha lógica? Estou iniciando agora nesse assunto e ainda estou meio perdido… :smiley:

Criado 6 de março de 2013
Respostas 0
Participantes 1