在電腦科學裡,「堆疊」是一種遵循「後進先出」(LIFO, Last In, First Out)原則的資料結構。想像一個一端封閉、一端開口的竹筒,將編好號的小球依序放入。先放入的球沉在底部,必須等後放入的球先拿出來,它才能取出。這個生活化的比喻精準捕捉了堆疊的核心特性。
在記憶體中,堆疊是一塊專門劃分的儲存區域。資料以「壓入」操作逐個存入,一個稱為「堆疊指標」的暫存器永遠指向堆頂(最後一筆資料)的位址。起始位置叫「堆底」。每壓入一筆資料,指標遞增;每「彈出」一筆資料,指標遞減。這樣就完美實現了後進先出的邏輯。
堆疊是計算機最基礎也最常用的資料結構之一。最經典的例子是函式呼叫:當函式 A 呼叫函式 B 時,A 的執行現場(區域變數、返回位址等)會被壓入堆疊保存,待 B 執行完畢彈出恢復,A 才能繼續執行。堆疊可用陣列實作,也可用鏈表實作,核心邏輯皆相同。
typedef struct {
int top; // 堆頂指標,初始為 -1
int data[MAX]; // 資料陣列
} Stack;
壓入時 top++,彈出時 top--,簡單高效。