Junior — Middle
რა პროცესები ხდება, როდესაც დაკავშირებული სიის საშუალებით განხორციელებულ სტეკში ახალი ელემენტი ემატება?
sobes.tech AI
პასუხი AI-სგან
Երբ նոր տարր եք ավելացնում stack-ին, որը իրականացվում է կապակցված ցանկի միջոցով, տեղի է ունենում հետևյալը:
- Ստեղծվում է նոր հանգույց (ցանկի տարր), որը պարունակում է ավելացվող արժեքը:
- Նոր հանգույցի ցուցիչը սահմանվում է ներկայիս վերևի տարրին (այսինքն՝ կապակցված ցանկի գլխին):
- Կապակցված ցանկի գլուխը թարմացվում է և այժմ ցույց է տալիս նոր հանգույցը — այն դառնում է նոր վերևի տարր stack-ում:
Այսպիսով, 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
}
}