写出c++链栈的基本操作和实现的代码
时间: 2024-10-18 19:15:21 浏览: 36
链栈是一种基于链表实现的数据结构,它支持在一端添加元素(压栈)和从另一端删除元素(弹栈),其基本操作包括:
1. **初始化**:创建一个新的空链栈。
```cpp
class Node {
public:
int data;
Node* next;
};
Stack* createStack() {
Stack* stack = new Stack();
stack->top = nullptr; // 初始化栈顶指针为空
return stack;
}
```
2. **压栈(push)**:将一个元素添加到栈顶。
```cpp
void push(Stack* &stack, int value) {
Node* newNode = new Node{value, stack->top};
stack->top = newNode;
}
```
3. **弹栈(pop)**:如果栈非空,则移除并返回栈顶元素,否则抛出异常。
```cpp
int pop(Stack* &stack) {
if (stack->top == nullptr) {
throw std::runtime_error("Stack is empty");
}
int value = stack->top->data;
Node* temp = stack->top;
stack->top = stack->top->next;
delete temp;
return value;
}
```
4. **查看栈顶元素(peek)**:检查但不移动栈顶元素。
```cpp
int peek(Stack* const stack) {
if (stack->top == nullptr) {
throw std::runtime_error("Stack is empty");
}
return stack->top->data;
}
```
5. **判断栈是否为空**:
```cpp
bool isEmpty(Stack* const stack) {
return stack->top == nullptr;
}
```
阅读全文