使用C++标准库中的栈
首先,让我们看看如何使用C++标准库中的栈:
#include <iostream>
#include <stack>
int main() {
std::stack<int> stk;
// 向栈中添加元素
stk.push(10);
stk.push(20);
// 访问栈顶元素
std::cout << "栈顶元素: " << stk.top() << std::endl;
// 移除栈顶元素
stk.pop();
// 再次访问栈顶元素
std::cout << "新的栈顶元素: " << stk.top() << std::endl;
return 0;
}
手动实现一个栈
以下是使用数组手动实现栈的一个简单例子:
#include <iostream>
#define MAX_SIZE 1000 // 定义栈的最大容量
class Stack {
int top;
public:
int a[MAX_SIZE]; // 使用静态数组存储栈元素
Stack() { top = -1; }
bool push(int x);
int pop();
int peek();
bool isEmpty();
};
// 向栈中添加元素
bool Stack::push(int x) {
if (top >= (MAX_SIZE - 1)) {
std::cout << "栈溢出";
return false;
} else {
a[++top] = x;
std::cout << x << " 已入栈\n";
return true;
}
}
// 移除并返回栈顶元素
int Stack::pop() {
if (top < 0) {
std::cout << "栈下溢";
return 0;
} else {
int x = a[top--];
return x;
}
}
// 查看栈顶元素
int Stack::peek() {
if (top < 0) {
std::cout << "栈为空";
return 0;
} else {
int x = a[top];
return x;
}
}
// 检查栈是否为空
bool Stack::isEmpty() {
return (top < 0);
}
// 主函数来测试上述栈类
int main() {
class Stack s;
s.push(10);
s.push(20);
s.push(30);
std::cout << s.pop() << " 已出栈\n";
std::cout << "栈顶元素是 " << s.peek() << std::endl;
return 0;
}
这个栈实现提供了基本的栈操作:push
(入栈)、pop
(出栈)、peek
(查看栈顶元素)和isEmpty
(检查栈是否为空)。