Lista simplesmente encadeada circular

3 respostas
wesleysilva

Ola galera estou tentando implementar um codigo de Pessoa com lista simplesmente encadeada circular
mas não estou conseguindo inserir a segunda pessoa

public class LSE {

	No prim;

	public void criar() {
		prim = null;
	}

	public void imprime() {
		No aux = new No();
		aux = prim;
		while (aux != null) {
			aux = aux.prox;
			System.out.println("Nome: " + prim.p.getNome());
			System.out.println("Idade: " + prim.p.getIdade());
			System.out.println("CPF: " + prim.p.getCpf());
			System.out.println("");
		}
	}

	public boolean estaVazio() {
		if (prim == null) {
			return true;
		} else {
			return false;
		}
	}

	public void inserir(Pessoa p) {
		No novo = new No();
		prim = novo;
		novo.p = p;
		novo.prox = null;
		if (estaVazio()) {
			prim = novo;
		} else {
			if (novo.p.getNome().compareTo(prim.p.getNome()) < 0) {
				novo.p = prim.p;
				novo.prox = null;
			}
		}
	}
}

3 Respostas

douglaskd

amigo, fiz muitas alterações... espero que esteja correto.

public class LSE {   
	  
    No prim;   
  
    public void criar() {   
        prim = null;   
    }   
  
    public void imprime() {   
        No aux = new No();   
        aux = prim;   
        do{    
            System.out.println("Nome: " + aux.p.getNome());   
            System.out.println("Idade: " + aux.p.getIdade());   
            System.out.println("CPF: " + aux.p.getCpf());   
            System.out.println("");  
            aux = aux.prox; 
        }while (aux != prim);   
    }   
  
    public boolean estaVazio() {   
        if (prim == null) {   
            return true;   
        } else {   
            return false;   
        }   
    }   

    public void inserir(Pessoa p) {   
        No novo = new No();   
        No aux = new No();  
        novo.p = p;   
          
        if (estaVazio()) {   
            prim = novo; 
            prim.prox = prim;
        } 
        else {   
        	   aux = prim;
        	   while(aux.prox != prim){
        		   aux = aux.prox;
               }
               aux.prox = novo; 
               novo.prox = prim; 
        }   
    }   
}
wesleysilva

Ola Amigo muito obrigado mas so tem um problema meu programa tem q ser ordenado em ordem alfabética
pensei em uma condiçao de comparaçao assim:

if (novo.p.getNome().compareTo(prim.p.getNome()) > 0) 
{

}

mas nao conseguir implementar

douglaskd

cria um método trocarObjeto(obj1,obj2)

quando um estiver na frente do outro você troca eles de posição e concerta as referencias prox.

ai você faz um buble sort dentro do imprime() e quando for trocar usa o trocarObjeto…

é o que sei amigo…

a questão é que é uma Lista Circular…a cabeça dela é o prim, o problema é que quando você Itera sobre ela acaba entrando em loop infinito… vai ter que dar uma raladinha =)

Criado 15 de março de 2012
Ultima resposta 16 de mar. de 2012
Respostas 3
Participantes 2