Sobes.tech
Junior — Middle

¿Cuál es la complejidad temporal de agregar un nuevo elemento al final de una lista enlazada simple?

sobes.tech AI

Respuesta de la IA

La complejidad temporal de agregar un nuevo elemento al final de una lista enlazada simple depende de si la lista tiene un puntero al último elemento (cola).

  • Si hay un puntero a la cola, la adición se realiza en O(1), ya que se puede acceder directamente al último elemento y agregar uno nuevo.
  • Si no hay puntero, es necesario recorrer toda la lista desde la cabeza hasta el final, lo que lleva O(n) tiempo, donde n es la cantidad de elementos en la lista.

Ejemplo con puntero a la cola:

class Node {
    var value: Int
    var next: Node?
    init(value: Int) {
        self.value = value
    }
}

class LinkedList {
    var head: Node?
    var tail: Node?

    func append(_ value: Int) {
        let newNode = Node(value: value)
        if let tailNode = tail {
            tailNode.next = newNode
        } else {
            head = newNode
        }
        tail = newNode
    }
}

Aquí, la adición se realiza en tiempo constante O(1).