链式栈的运算操作c++
时间: 2024-11-03 14:12:45 浏览: 23
链式栈(Linked Stack),也称为链表堆栈,是一种基于链表数据结构实现的线性数据结构,它的主要特点是可以在常数时间内完成插入和删除操作(时间复杂度为O(1)),因为只需要改变头节点的引用即可。
在C++中,你可以通过定义一个链表节点结构(Node),包含一个值和指向下一个节点的指针,来构建链式栈。以下是基本的链式栈操作:
1. **创建栈**:初始化一个空的链表作为栈的基础。
```cpp
class Node {
public:
int data;
Node* next;
// 构造函数等
};
Stack *stack = new Stack(); // 创建一个链式栈实例
```
2. **入栈(Push)**:将元素添加到栈顶。
```cpp
void push(Stack *&top, int value) {
Node *temp = new Node();
temp->data = value;
temp->next = top;
top = temp; // 更新顶部指针
}
```
3. **出栈(Pop)**:移除并返回栈顶元素,如果为空则抛异常。
```cpp
int pop(Stack *&top) {
if (top == nullptr) {
throw "Stack is empty!";
}
int value = top->data;
Node *temp = top;
top = top->next;
delete temp; // 释放内存
return value;
}
```
4. **查看栈顶元素(Peek)**:获取但不移除栈顶元素。
```cpp
int peek(Stack *&top) {
if (top == nullptr) {
throw "Stack is empty!";
}
return top->data;
}
```
5. **判断栈是否为空(IsEmpty)**:
```cpp
bool isEmpty(Stack *top) {
return top == nullptr;
}
```
阅读全文