Lista Duplamente ligada

5 respostas
java
Carol_Jorgino
public class ListaDupla

{

private CaixaLDL aux,ant,prox,raiz,cx1,cx2,cx3,cx4;
public ListaDupla(int a , int b, int c, int d)
{ 	
	raiz=null;
	cx1=null;
	cx2=null;
	cx3=null;
	cx4=null;
	aux=null;
	ant=null; 

   cx1=new CaixaLDL();
   cx2=new CaixaLDL();
   cx3=new CaixaLDL();
   cx4=new CaixaLDL();
  raiz=new CaixaLDL();
 cx4.setvmeio(a);
 cx3.setvmeio(b);
 cx2.setvmeio(d);
 cx1.setvmeio(c);
raiz.setvmeio(4);
}

public void LigaTudo()

{
cx4.setdir(aux);
cx4.setesq(aux);
cx3.setdir(aux);
cx3.setesq(aux);
cx2.setdir(aux);
cx2.setesq(aux);
cx1.setdir(aux);
cx1.setesq(aux); 
raiz.setdir(aux);
raiz.setesq(aux);
}

public void mostrafi()

{

aux=ant;

//Testa se a lista existe

if(aux==null)

{

System.out.println(Lista vazia!!!\n);

return;

}
//Percore a lista para imprimir
	 while(aux!=null)
	 {
	     try { Thread.sleep (500); } //Sleep para visualizar melhor
	   catch (InterruptedException ex) {}   
	   System.out.print("|"+aux.getvmeio()+"| -> ");
	   aux=aux.getesq();
	   break;
	}
   
   
}

}
alguém sabe como posso mostrar minha caixa? toda vez que executo o programa devolve lista vazia.

5 Respostas

D
public void mostrafi()
{
aux=ant;
//Testa se a lista existe
if(aux==null)

O atributo ant é nulo, portanto aux também é nulo. Tente:

// aux=ant;
aux=raiz;

e remova aquele break.

Recomendo que pesquise sobre “lista duplamente encadeada”.

Carol_Jorgino

Obrigada Diego, essa forma foi didática que meu professor encontro para entendermos o conceito.
Já tentei desta forma porém ele só pega um número apenas e não percorre a lista toda
Obrigada pela ajuda !!

D

aux é nulo, ou seja, LigaTudo não liga nada, portanto o getesq no mostrafi retornará sempre nulo e não passará para o próximo CaixaLDL.

Carol_Jorgino
Exatamente.

cx4.setdir(aux);

cx4.setesq(aux);

cx3.setdir(aux);

cx3.setesq(aux);

cx2.setdir(aux);

cx2.setesq(aux);

cx1.setdir(aux);

cx1.setesq(aux);

raiz.setdir(aux);

raiz.setesq(aux);

fiz desta forma aqui:

aux=raiz;

aux=cx1;

aux=cx2;

aux=cx3;

aux=cx4;

porém quando ele vai para mostra retorna apenas um número
D

No mostrafi está:

aux=aux.getesq();

Então o que deveria estar no LigaTudo seria:

// cx4.setesq(cx5);
cx3.setesq(cx4);
cx2.setesq(cx3);
cx1.setesq(cx2);
raiz.setesq(cx1);
Criado 25 de maio de 2020
Ultima resposta 26 de mai. de 2020
Respostas 5
Participantes 2