Junior — Middle
Какви процеси се случват, когато към стек, реализиран чрез свързан списък, се добавя нов елемент?
sobes.tech AI
Отговор от AI
Когато добавяте нов елемент към стек, реализиран чрез свързан списък, се случва следното:
- Създава се нов възел (елемент на списъка), който съдържа стойността, която трябва да бъде добавена.
- Посочващият указател на новия възел се задава на текущия горен елемент на стека (т.е. на главата на свързания списък).
- Главата на свързания списък се актуализира и сега сочи към новия възел — той става новият горен елемент на стека.
По този начин операцията push се изпълнява за константно време O(1), тъй като не изисква обхождане на списъка.
Пример на 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
}
}