Sobes.tech
Junior — Middle

Hogyan lehet egy verem adatstruktúrát felépíteni egy láncolt listával?

sobes.tech MI

Válasz az MI-től

A verem egy összekapcsolt lista alapjaira építhető, ahol minden elem (csomópont) tartalmaz adatokat és hivatkozást a következő elemre. A verem felső eleme a lista fejét jelenti. Fő műveletek:

  • push — új csomópont hozzáadása a lista elejéhez;
  • pop — a lista elejéről eltávolítja a csomópontot és visszaadja az értékét;
  • peek — megtekinti a fej értékét anélkül, hogy eltávolítaná.

Kotlin példában:

class Node<T>(val data: T, var next: Node<T>? = null)

class Stack<T> {
    private var head: Node<T>? = null

    fun push(value: T) {
        val newNode = Node(value, head)
        head = newNode
    }

    fun pop(): T? {
        val value = head?.data
        head = head?.next
        return value
    }

    fun peek(): T? = head?.data

    fun isEmpty() = head == null
}

Ez a megközelítés O(1) időben biztosítja a verem műveleteit és dinamikus bővítést tesz lehetővé anélkül, hogy nagy tömböt kellene lefoglalni.