Sobes.tech
Junior — Middle

Jaké procesy probíhají, když je do zásobníku implementovaného přes spojovaný seznam přidán nový prvek?

sobes.tech AI

Odpověď od AI

Při přidání nového prvku do zásobníku, implementovaného pomocí spojovaného seznamu, se děje následující:

  1. Vytvoří se nový uzel (prvek seznamu), který obsahuje hodnotu, kterou je třeba přidat.
  2. Ukazatel nového uzlu je nastaven na aktuální horní prvek zásobníku (tedy na hlavu spojovaného seznamu).
  3. Hlava spojovaného seznamu je aktualizována a nyní ukazuje na nový uzel — ten se stává novým horním prvkem zásobníku.

Tímto způsobem je operace push provedena v konstantním čase O(1), protože nevyžaduje průchod seznamem.

Příklad v Kotlinu:

class Node<T>(val value: T, var next: Node<T>? = null)

class Stack<T> {
    private var head: Node<T>? = null

    fun push(value: T) {
        val newNode = Node(value)
        newNode.next = head
        head = newNode
    }

    fun pop(): T? {
        val value = head?.value
        head = head?.next
        return value
    }
}