基本堆疊

常見

概念

堆疊 (Stack) 是一種具有後進先出 (Last In First Out, LIFO) 特性的資料結構,就像是一疊盤子,只能在最上面放盤子或是拿走盤子。

堆疊有兩個基本操作:

Push - 將元素放入堆疊的最上面。

alt text

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

alt text

注意堆疊只能在最上面進行 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;

這樣就完成了一個簡單的堆疊實作!下個章節將介紹堆疊的應用。