2、实现链栈及其基本运算C++
时间: 2024-10-08 09:02:26 浏览: 28
链栈是一种基于链表实现的数据结构,它遵循栈的基本操作原则,即最后入栈的元素最先出栈。在C++中,我们可以创建一个链栈节点(Node)和两个主要的方法:压栈(push)和弹栈(pop)。
```cpp
// 定义链栈节点
struct StackNode {
int data; // 节点数据
StackNode* next; // 指向下一个节点的指针
};
class Stack {
private:
StackNode* top; // 栈顶指针
public:
// 初始化空栈
Stack() : top(nullptr) {}
// 压栈:将元素添加到栈顶
void push(int value) {
StackNode* newNode = new StackNode;
newNode->data = value;
newNode->next = top;
top = newNode;
}
// 弹栈:返回并移除栈顶元素,如果没有元素则抛异常
int pop() {
if (top == nullptr) {
throw std::runtime_error("Stack is empty");
}
int value = top->data;
StackNode* temp = top;
top = top->next;
delete temp;
return value;
}
// 检查栈是否为空
bool isEmpty() const {
return top == nullptr;
}
// 返回栈顶元素,但不移除
int peek() const {
if (isEmpty()) {
throw std::runtime_error("Stack is empty");
}
return top->data;
}
};
```
阅读全文