Sobes.tech
Junior — Middle

Qual é a complexidade temporal da operação de adicionar um elemento ao final de uma lista ligada?

sobes.tech IA

Resposta da IA

A complexidade temporal da operação de adicionar um elemento ao final de uma lista ligada depende de ter um ponteiro para o último elemento.

  • Se houver um ponteiro para o final (tail), a adição ocorre em O(1), pois pode-se adicionar imediatamente um novo elemento após o tail.
  • Se não houver um ponteiro para o tail, é necessário percorrer toda a lista para encontrar o último elemento, e então a complexidade será O(n), onde n é o número de elementos na lista.

Exemplo com ponteiro para o tail:

class LinkedList {
    Node head;
    Node tail;

    void addLast(int value) {
        Node newNode = new Node(value);
        if (head == null) {
            head = newNode;
            tail = newNode;
        } else {
            tail.next = newNode;
            tail = newNode;
        }
    }
}