堆疊(Stack)是一種特殊的資料結構,它遵循LIFO(Last In, First Out)原則,意思是最後插入的元素將是第一個被取出的元素。堆疊有許多實際應用,例如在程式執行時保存變數和函式呼叫的內容、檢查語法括號是否匹配等。
基本概念
主要的操作包括:
C++中的陣列實作堆疊
以下是使用陣列實作堆疊的C++程式碼:
#include <iostream>
#include <stdexcept>
const int MAX_SIZE = 100; // 堆疊最大容量
class Stack {
private:
int arr[MAX_SIZE];
int top;
public:
Stack() : top(-1) {}
// 添加元素到堆疊
void push(int value) {
if (top >= MAX_SIZE - 1) {
throw std::overflow_error("Stack overflow");
}
arr[++top] = value;
}
// 從堆疊刪除頂部元素
int pop() {
if (isEmpty()) {
throw std::underflow_error("Stack underflow");
}
return arr[top--];
}
// 查看堆疊頂部的元素
int peek() const {
if (isEmpty()) {
throw std::underflow_error("Stack is empty");
}
return arr[top];
}
// 檢查堆疊是否為空
bool isEmpty() const {
return top == -1;
}
};
int main() {
Stack s;
s.push(5);
s.push(10);
s.push(15);
std::cout << s.peek() << std::endl; // 顯示 15
s.pop();
std::cout << s.peek() << std::endl; // 顯示 10
return 0;
}
陣列實作堆疊的優點和缺點
優點:
缺點:
總結
雖然陣列實作堆疊有其優點和缺點,但對於許多應用來說,這是一個高效和直接的方法。然而,在某些情況下,可能需要動態大小的堆疊,這時鏈結串列實作可能更為合適。