(一) 何謂「stack」?
在計算機科學中,「stack」(堆疊)是一種常見的資料結構,它是一種後進先出(Last In, First Out, LIFO)的資料儲存方式。這意味著,最後插入(push)堆疊的資料會最先被取出(pop)。
堆疊的基本操作:
- Push:將一個元素添加到堆疊的頂端。
- Pop:從堆疊的頂端移除並返回一個元素。
- Peek/Top:返回堆疊頂端的元素但不移除它。
- isEmpty:檢查堆疊是否為空。
- isFull:檢查堆疊是否已滿(若堆疊有固定大小)。
堆疊的應用:
- 函數調用:在程序執行中,使用堆疊來儲存函數調用和局部變量,支持函數的遞迴調用。
- 表達式求值:在計算中綴、中序和後綴表達式時使用堆疊。
- 括號匹配:檢查括號匹配的正確性。
- 撤銷操作:如文本編輯器中的撤銷操作,可以用堆疊儲存歷史操作記錄。
堆疊的實現方式:
堆疊可以使用多種方式來實現,常見的有:
- 陣列(Array):用固定大小的陣列來實現堆疊,簡單但空間大小固定。
- 連結串列(Linked List):用連結串列來實現堆疊,動態調整大小,靈活但實現相對複雜。
總結來說,堆疊是一種簡單而強大的資料結構,能夠以後進先出的方式管理資料,廣泛應用於計算機科學和程序設計的各個領域。