用c++写一套完整的栈
时间: 2024-10-12 17:15:40 浏览: 8
在C++中,我们可以自定义一个栈数据结构,以下是实现一个基础的栈类的示例:
```cpp
#include <iostream>
#include <vector>
class Stack {
private:
std::vector<int> elements; // 使用动态数组作为内部存储
public:
// 构造函数,初始化一个空栈
Stack() {}
// 判断栈是否为空
bool isEmpty() const {
return elements.empty();
}
// 向栈顶添加元素
void push(int value) {
elements.push_back(value);
}
// 从栈顶移除并返回元素
int pop() {
if (isEmpty()) {
throw std::runtime_error("Stack is empty");
}
int top = elements.back();
elements.pop_back();
return top;
}
// 查看但不改变栈顶元素
int peek() const {
if (isEmpty()) {
throw std::runtime_error("Stack is empty");
}
return elements.back();
}
// 返回栈的大小
size_t size() const {
return elements.size();
}
};
int main() {
Stack s;
s.push(10); // 入栈
s.push(20);
std::cout << "Top element: " << s.peek() << std::endl; // 输出20
std::cout << "Stack size: " << s.size() << std::endl;
s.pop(); // 出栈10
std::cout << "After pop: Top element = " << s.peek() << std::endl;
return 0;
}
```
在这个例子中,我们定义了一个名为`Stack`的类,它包含了常见的栈操作:`push`, `pop`, `peek`, 和`isEmpty`。注意,为了简化示例,这里没有处理出栈时栈为空的情况,实际应用中应包含适当的错误检查。
阅读全文