概念#
堆疊 (Stack) 是一種具有後進先出 (Last In First Out, LIFO) 特性的資料結構,就像是一疊盤子,只能在最上面放盤子或是拿走盤子。
堆疊有兩個基本操作:
Push - 將元素放入堆疊的最上面。

Pop - 從堆疊的最上面取出元素。

注意堆疊只能在最上面進行 Push 和 Pop 操作,不支援在中間插入或刪除元素。
實作方式#
在 C++ 中,堆疊可以使用傳統的陣列來實作,這裡提供一個簡單的範例:
int stack[1000]; // 假設堆疊最多放 1000 個元素
int top = 0; // 堆疊頂端的索引
// 將元素 x 放入堆疊的最上面
void push(int x) {
stack[top++] = x;
}
// 取出堆疊最上面的元素
void top() {
return stack[top - 1];
}
// 從堆疊頂端移除元素
void pop() {
if (top > 0) --top;
}
// 檢查堆疊是否為空
bool empty() {
return top == 0;
}
雖然看起來很簡單,不過其實還有更簡單的方式!就是使用 C++ STL 中的 stack:
stack<int> stk;
// 把 1 放入堆疊
stk.push(1);
// 把 2 放入堆疊
stk.push(2);
// 印出 2
cout << stk.top() << endl;
// 把最頂端的 2 移除
stk.pop();
// 印出 1
cout << stk.top() << endl;
這樣就完成了一個簡單的堆疊實作!下個章節將介紹堆疊的應用。
