Stek LIFO prinsipi ilə işləyir: ən son qoyulan ən əvvəl çıxır. Üç əsas əməliyyat — push, pop, peek — yalnız yuxarı ilə işləyir və O(1)-dir. Bu, ADT nümunəsidir; onu müxtəlif strukturlarda reallaşdırmaq olar.

Stekdə push və pop
Stekdə push və pop

list üzərində stek

Python-da ən sadə stek list-dir: append yuxarıya qoyur, pop() götürür. Yuxarı — siyahının sonudur, çünki əvvəldəki insert(0, x) / pop(0) bütün elementləri sürüşdürür (O(n)). list tutumu tükənəndə böyüdülür, ona görə push yalnız amortizə O(1)-dir (amortizə təhlili). Boş stekdə pop və peek IndexError atmalıdır: səssiz None səhvi gizlədir.

python
class Stack:
    def __init__(self):
        self._items = []

    def push(self, item):
        self._items.append(item)

    def pop(self):
        if not self._items:
            raise IndexError("pop from empty stack")
        return self._items.pop()

    def peek(self):
        if not self._items:
            raise IndexError("peek at empty stack")
        return self._items[-1]