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í:
- Vytvoří se nový uzel (prvek seznamu), který obsahuje hodnotu, kterou je třeba přidat.
- Ukazatel nového uzlu je nastaven na aktuální horní prvek zásobníku (tedy na hlavu spojovaného seznamu).
- 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
}
}