如何用C++构造一个完整的顺序栈
时间: 2024-09-26 19:11:11 浏览: 43
在C++中,你可以通过标准模板库(STL)提供的stack容器,或者自定义结构体和函数来构建一个简单的顺序栈(也称为线性堆栈)。这里是一个基本的自定义顺序栈实现:
```cpp
#include <iostream>
using namespace std;
// 定义栈的结点结构
template <typename T>
struct StackNode {
T data;
StackNode<T>* next;
};
// 定义栈类
template <typename T>
class MyStack {
private:
StackNode<T> *top; // 栈顶指针
public:
// 构造函数,初始化栈为空
MyStack() : top(nullptr) {}
// 检查栈是否为空
bool isEmpty() const { return top == nullptr; }
// 向栈顶压入元素
void push(const T& value) {
StackNode<T>* newNode = new StackNode<T>;
newNode->data = value;
newNode->next = top;
top = newNode;
}
// 从栈顶弹出并返回元素
T pop() {
if (isEmpty()) {
throw runtime_error("Stack is empty.");
}
T value = top->data;
StackNode<T>* temp = top;
top = top->next;
delete temp;
return value;
}
// 查看栈顶元素但不删除
T peek() const {
if (isEmpty()) {
throw runtime_error("Stack is empty.");
}
return top->data;
}
};
int main() {
MyStack<int> s;
s.push(1);
s.push(2);
cout << "Top element: " << s.peek() << endl;
cout << "Popped element: " << s.pop() << endl;
return 0;
}
```
阅读全文