萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 程式設計 >  >> 網路程式設計 >> 程式語言綜合

Python 堆疊類別實作:列表模擬 LIFO 結構

堆疊 (Stack) 基本操作

  • push(item):推入頂端
  • pop():彈出頂端
  • top() / peek():查看頂端不移除
  • is_empty():判斷是否為空

以列表實作


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

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

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

    def top(self):
        if self.is_empty():
            raise IndexError("top from empty stack")
        return self._items[-1]

    def is_empty(self):
        return len(self._items) == 0

    def __len__(self):
        return len(self._items)

    def __repr__(self):
        return f'Stack({self._items})'

使用範例


s = Stack()
s.push(1)
s.push(2)
s.push(3)
print(s.top())    # 3
print(s.pop())    # 3
print(s)          # Stack([1, 2])
print(len(s))     # 2

補充:原文 Path 類別

原文提供一個 Path 類別,除堆疊操作外含 remove() 移除底部 (index 0),這已違背 LIFO 原則,屬於佇列/雙端佇列行為。純堆疊不需此方法。

標準庫替代

  • list 直接用 append/pop 即為堆疊
  • collections.deque 雙端佇列,append/pop 同為 O(1),更適合高頻操作
  • queue.LifoQueue 執行緒安全堆疊
copyright © 萬盛學電腦網 all rights reserved