Sobes.tech
Junior — Middle

Как да изградим структура от данни стек, използвайки свързан списък?

sobes.tech AI

Отговор от AI

Стекът може да бъде реализиран въз основа на свързан списък, където всеки елемент (възел) съдържа данни и препратка към следващия елемент. Горният елемент на стека е главата на списъка. Основните операции:

  • push — добавяне на нов възел в началото на списъка;
  • pop — премахване на възел от началото на списъка и връщане на неговата стойност;
  • peek — преглед на стойността на главата без да се премахва.

Пример на Kotlin:

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
}

Този подход осигурява операции на стек с време O(1) и динамично разширяване без необходимост от заделяне на голям масив.