Sobes.tech
Junior — Middle

რა პროცესები ხდება, როდესაც დაკავშირებული სიის საშუალებით განხორციელებულ სტეკში ახალი ელემენტი ემატება?

sobes.tech AI

პასუხი AI-სგან

Երբ նոր տարր եք ավելացնում stack-ին, որը իրականացվում է կապակցված ցանկի միջոցով, տեղի է ունենում հետևյալը:

  1. Ստեղծվում է նոր հանգույց (ցանկի տարր), որը պարունակում է ավելացվող արժեքը:
  2. Նոր հանգույցի ցուցիչը սահմանվում է ներկայիս վերևի տարրին (այսինքն՝ կապակցված ցանկի գլխին):
  3. Կապակցված ցանկի գլուխը թարմացվում է և այժմ ցույց է տալիս նոր հանգույցը — այն դառնում է նոր վերևի տարր 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
    }
}