Sobes.tech
Junior — Middle

Байланыштуу тизмеге негизделген стекке жаңы элемент кошулганда кандай процесстер болот?

sobes.tech AI

AIден жооп

Жаңы элементти стекке кошуу, ал байланышык тизмеге негизделген болсо, төмөнкүдөй болот:

  1. Жаңы түйүн (тизмедеги элемент) түзүлөт, ага кошулчу мааниси жайгаштырылат.
  2. Жаңы түйүндүн көрсөткүчү учурдагы эң жогорку элементке (яғни, байланышык тизмедеги башына) коюлат.
  3. Байланышык тизмедеги башкы көрсөтүү жаңыланып, азыр ал жаңы түйүнгө ишарат кылат — ал жаңы эң жогорку элементке айланат.

Мындайча айтканда, 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
    }
}