Ola pessoal sou iniciante em java, gostaria de uma ajuda com meu codi por favor, bom eu criei uma lista dupla encadeada e gostaria de imprimilar do jeito a seguir.
preciso entregar esse trabalho semana que vem, ta tudo certo menos a parte de imprimir. socorro por favor alguem me ajude.
eu que:
tipo eu digito 1,2,3,4
ele imprime assim:
Anterior: Null
Valor: 1
Prox: 2
Anterior: 1
Valor: 2
Prox: 3
Anterior: 2
Valor: 3
Prox: 4
Anterior: 3
Valor: 4
Prox: Null
eu queria que imprimisse assim:
N - 1 - 2 - 3
1 - 2 - 3 - 4
2 - 3 - 4 - N
os Nós separadamente entendeu:
1ºNó 2ºNó 3ºNó 4ºNó
N - 1 - 2 - 3
1 - 2 - 3 - 4
2 - 3 - 4 - N
eu tentei usasr visitor mais não sei criar uma Interface pra ela ficou mais ou mesmo assim
[code]package ListaDupla;
/**
-
@version 1.0, 25.08.2011
*/
public interface Visitor {public void visit(No no);
} [/code]
[code]public void visitForward(Visitor visitor) {
for (No aux = inicio; aux != null; aux = aux.getProximo() ) {
visitor.visit(aux);
}
}
public void listarForward() {
visitForward(new Visitor() {
@Override
public void visit(No no) {
No anterior = no.getAnterior();
if (anterior != null) {
System.out.print(" - " + anterior.getValor());
} else {
System.out.print("N");
}
}
});
//TODO o mesmo para o nó e o nó.getProximo
} [/code]
mais não consegui fazer funcionar desse jeito, alguem poderia me ajudar com esse visitor, ou alguem tem alguma forma diferente pra imprimir do jeito citado acima:
Segue as classes da minha lista dupla
class Nó
[code]package ListaDupla;
public class No {
int Valor;
private No proximo;
private No anterior;
private int posicao;
public No(){
this.proximo=null;
this.anterior=null;
}
public No(int num){
this.Valor = num;
this.proximo = null;
this.anterior = null;
}
public int getValor(){
return Valor;
}
public void setValor(int Valor){
this.Valor = Valor;
}
public No getProximo(){
return proximo;
}
public void setProximo(No proximo){
this.proximo = proximo;
}
public No getAnterior(){
return anterior;
}
public void setAnterior(No anterior){
this.anterior = anterior;
}
public int getEndereco() {
return System.identityHashCode(this);
}
public void setPosicao(int posicao) {
this.posicao = posicao;
}
public int getPosicao() {
return posicao;
}
}[/code]
class ListaDupla
[code]package ListaDupla;
public class ListaDupla {
private No inicio;
private No fim ;
private int ContNo = 0;
int tam;
public ListaDupla(){
tam = 0;
inicio = null;
fim = null;
}
private No primeiro = null;
public void setPrimeiro(No primeiro) {
this.primeiro = primeiro;
}
//Retorna o primeiro nó da lista.
public No getPrimeiro() {
return primeiro;
}
public boolean InicioVazio(){
return (tam == 0);
}
public boolean FimVazio(){
return (fim==null);
}
public int ContNo(){
return this.ContNo;
}
public void addInicio (int num) {
No NovoNo = new No(num);
if(InicioVazio()){
inicio = fim = NovoNo;
fim = inicio;
NovoNo.setAnterior(null);
}
else {
fim.setAnterior(NovoNo);
NovoNo.setProximo(inicio);
inicio = NovoNo;
}
tam++;
}
public void addFim(int num){
No NovoNo = new No(num);
if(FimVazio())
inicio=fim=NovoNo;
else
{
fim.setProximo(NovoNo);
NovoNo.setAnterior(fim);
fim = NovoNo;
}
tam++;
}
public void listar() {
No aux = inicio;
while(aux!=null){
if(aux.getAnterior()!=null){
System.out.print(“Anterior: “+aux.getAnterior().getValor()+”\n”);
}
else{
System.out.print(“Anterior: Null “+”\n”);
}
System.out.print(“Valor: “+aux.getValor()+”\n”);
if(aux.getProximo()!=null){
System.out.print(“Prox: “+aux.getProximo().getValor()+”\n”);
}
else{
System.out.print(“Prox: Null”);
}
aux = aux.getProximo();
}
System.out.print("\n");
}
}[/code]
class TesteListaDupla
[code]package ListaDupla;
import javax.swing.JOptionPane;
public class TesteListaDupla {
public static void main(String[] args) {
ListaDupla ls = new ListaDupla();
Integer num = lerInteiro();
while(num!=null){
ls.addFim(num);
num=lerInteiro();
}
ls.listar();
}
private static Integer lerInteiro() {
Integer result = null;
String valor = null;
boolean continuar = false;
do {
try {
valor = JOptionPane.showInputDialog("Informe um valor: ");
if (valor != null) {
result = Integer.parseInt(valor);
}
continuar = false;
} catch (Exception e) {
JOptionPane.showMessageDialog(null, "O valor " + valor
+ " não é válido");
continuar = true;
}
} while (continuar==true);
return result;
}
} [/code]