Sobes.tech
Junior — Middle

Aké procesy prebiehajú, keď sa do zásobníka implementovaného pomocou prepojenej zoznamu pridá nový prvok?

sobes.tech AI

Odpoveď od AI

Pri pridávaní nového prvku do zásobníka, implementovaného pomocou prepojenej zoznamu, sa deje nasledovné:

  1. Vytvorí sa nový uzol (prvok zoznamu), ktorý obsahuje hodnotu, ktorú je potrebné pridať.
  2. Ukazovateľ nového uzla sa nastaví na aktuálny horný prvok zásobníka (teda na hlavu prepojeného zoznamu).
  3. Hlava prepojeného zoznamu sa aktualizuje a teraz ukazuje na nový uzol — ten sa stáva novým horným prvkom zásobníka.

Týmto spôsobom je operácia push vykonaná v konštantnom čase O(1), pretože nevyžaduje prechádzanie zoznamom.

Príklad v Kotlin:

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
    }
}