Lista ligada com cauda - adicionar


Curso de estrutura de dados e algoritmos em Java


Aprenda a adicionar elementos em uma lista ligada com cauda (tail)


Adicionar elementos em uma lista ligada com cauda é um processo simples, pois por padrão o novo elemento será sempre adicionado ao final da lista.

Mais adiante será demonstrado como adicionar novos elementos na posição p da lista.

Pelo fato de adicionarmos sempre no final da lista, o processo para isso consiste em criar um novo nó (node) com o valor desejado, e fazer sua referência utilizando o nó fim da lista ligada com cauda.

Repare que ao contrário de como adicionamos o elemento na lista ligada, onde existia a necessidade de percorrer toda a lista até encontrar o elemento final da lista, na lista ligada com cauda nós já temos a referência deste elemento, o que torna a operação mais simples e muito mais rápida.

Veja no código a seguir como fica esta implementação do método isoladamente:

public void adicionar(T valor) {
    Node<T> novoNode = new Node<>(valor);
    if (inicio == null) {
        inicio = novoNode;
        fim = novoNode;
    } else {
        fim.setProximo(novoNode);
        fim = novoNode;
    }
}

Repare no código acima que o algoritmo trata dois casos, o primeiro para quando a lista está vazia, e o segundo para quando a lista possui um ou mais elementos.

Quando a lista está vazia, o processo requer simplesmente adicionar a referência do novo nó (node) para inicio e fim, pois como a lista terá apenas um nó, ele será tanto o início quanto o fim da lista.

No cenário onde temos ao menos um elemento na lista, o processo é diferente, pois neste caso definimos o atual elemento do fim da lista referenciando o novo nó, e adicionamos ao nó fim da lista ligada com cauda a referência do novo nó, que passará a ser o últimos elemento da lista.

Veja agora o método integrado na classe de lista ligada criada previamente:

public class ListaLigadaCauda<T> {

    private Node<T> inicio; // referência do nó inicial da lista
    private Node<T> fim; // referência do nó final da lista

    public ListaLigadaCauda() {
        inicio = null;
        fim = null;
    }

    public Node getInicio() {
        return inicio;
    }

    public Node getFim() {
        return fim;
    }

    public void adicionar(T valor) {
        Node<T> novoNode = new Node<>(valor);
        if (inicio == null) {
            inicio = novoNode;
            fim = novoNode;
        } else {
            fim.setProximo(novoNode);
            fim = novoNode;
        }
    }

}

Conforme demonstrado no código, adicionar elementos em uma lista ligada com cauda é uma tarefa bem mais efetiva do que adicionar em listas nativas, pois aqui somente definimos uma referência para o nó e não precisamos mover os elementos como ocorreria em uma lista nativa.

Repare ainda como a lista ligada com cauda pelo fato de manter a referência do último elemento da lista, consegue adicionar um novo valor com uma excelente performance, sem a necessidade de percorrer a lista.

Portanto, caso o seu algoritmo necessite adicionar diversos valores a uma lista, a lista ligada seria uma melhor opção sob o uso de uma lista nativa (array).


Artigos recentes: