Ir para conteúdo
Fórum Script Brasil
  • 0

Lista Encadeada Simples


A. Kenneth

Pergunta

Olá pessoas, gostaria de tirar uma dúvida. Estou colocando abaixo parte da questão pois não consigo achar a fonte do meu erro. Onde estou errando é que a primeira vez que eu tento inserir uma pessoa ele não coloca na lista, só a partir da segunda e a primeira posição fica null. Será que alguém poderia dar uam olhada pra mim.

Mais uma coisa, esse código ainda não está terminado, ainda falta muita coisa, então se essa for a causa do problema, me digam o que falta completar para eu fazer, mas NÃO coloquem o código se essa for a causa do problema.

public class ListaSimplesEncadeada {
    
    private ItemListaEncadeada inicioLista = null;
    
    /**
     * Inclui a informação no inicio da lista
     * @param informacao informação a ser incluída no início da lista
     */
[color="#FF0000"]
////////Aqui eu acho que está o erro ////////////////////////////////////////////////////[/color]


    public void incluir(Pessoa informacao){    
        ItemListaEncadeada novoItem = new ItemListaEncadeada();
        novoItem.setInformacao(informacao);
        
        //comando equivalente a novoItem.proximo = lista;
        novoItem.setProximo(inicioLista);
        inicioLista = novoItem;
    }
    /**
     * Inclui a informação na lista na posição informada
     * @param posicao a posição a ser recuperada
     * @param informacao informação a ser incluída na lista
     */
    public void incluir (int posicao, Pessoa informacao){
        ItemListaEncadeada auxiliar = new ItemListaEncadeada();
        ItemListaEncadeada anterior = new ItemListaEncadeada();
        ItemListaEncadeada novoItem = new ItemListaEncadeada();
        
        anterior = null;
        
        novoItem.setInformacao(informacao);
        novoItem.setProximo(null);
        
        auxiliar.setProximo(inicioLista);
        int contador = 0;
        
        if (posicao == 1){
            incluir(informacao);
        }else{
            if (posicao > getTamanho()){
                posicao = getTamanho()+1;
            }
            while (auxiliar != null){    
                if (contador == posicao){
                    novoItem.setProximo(auxiliar);
                    anterior.setProximo(novoItem);
                    break;
                }else{
                    anterior = auxiliar;
                    anterior.setProximo(auxiliar);
                    auxiliar = auxiliar.getProximo();
                    contador++;
                }
            }                    
        }
    }
    /**
     * Recupera a informação da posição informada
     * @param posicao a posição a ser recuperada
     * @return a informação
     */
    public Pessoa obter (int posicao){
        return null;
    }

    /**
     * recupera a primeira informação da lista
     * @return a informação da lista
     */
    public Pessoa getPrimeiro(){
        if ( inicioLista != null )
            return inicioLista.getInformacao();
        else
            return null;
    }
    /**
     * Remove o elemento da lista baseado na posição
     * @param posicao posição a ser excluída
     */
    public void remover(int posicao){
        ItemListaEncadeada auxiliar = new ItemListaEncadeada();
        auxiliar.setProximo(inicioLista);
        
        ItemListaEncadeada anterior = new ItemListaEncadeada();
        anterior = null;
        
        int contador = 0;
        
        if (posicao == 1 ){
            auxiliar = inicioLista;
            inicioLista = auxiliar.getProximo();
        }else{
            while (auxiliar != null){
                if (contador == posicao){
                    if (anterior == null){
                        inicioLista = auxiliar.getProximo();
                    }else{
                        anterior.setProximo(auxiliar.getProximo());
                    }
                    break;
                }else{
                    anterior = auxiliar;
                    auxiliar = auxiliar.getProximo();
                    contador++;
                }
            }
        }
    
                
    }
    /**
     * Remove a informação da lista
     * @param informacao
     */
    public void remover(Pessoa informacao){
        
    }
    /**
     * Remove todos os elementos da lista
     */
    public void limpar(){
    
    }
    /**
     * recupera a quantidade de elementos cadastrados na lista
     * @return
     */
    public int getTamanho(){
        ItemListaEncadeada auxiliar = new ItemListaEncadeada();
        auxiliar.setProximo(this.inicioLista);
        int cont = 0;
        while (auxiliar.getProximo() != null) {
            cont++;
        }
        return cont;
    }
    
    /**
     * Verifica se a lista possui a informação solicitada
     * @param informacao dado a ser pesquisado
     * @return verdadeiro se encontrar
     */
    public boolean contem(Pessoa informacao){
        return false;
    }
    /**
     * Joga na saída principal todos os elementos cadastrados da lista
     */
    public void listar(){
        ItemListaEncadeada auxiliar = new ItemListaEncadeada();
        auxiliar.setProximo(this.inicioLista);
        Pessoa informacao = new Pessoa();
        while (auxiliar.getProximo() != null) {
            if (inicioLista.getProximo() == null) {  
                System.out.println("Não há Candidatos Nesta Lista");
                break;
            }else{ 
                informacao = auxiliar.getInformacao();
                if (informacao != null){
                    System.out.println(auxiliar.getInformacao());
                    System.out.println("NOME: "+informacao.getNome());
                    System.out.println("IDADE: "+informacao.getIdade());
                    System.out.println("SEXO: "+informacao.getSexo());
                }
                    
                auxiliar = auxiliar.getProximo();
                
            }
        }
        System.out.println("");
        System.out.println("");
    }
}

Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,7k
×
×
  • Criar Novo...