用c++创建一个链栈并实现出栈和入栈
时间: 2024-10-19 22:17:40 浏览: 26
在C++中,我们可以使用结构体或者类来创建链式栈,这里我们简单地展示如何使用结构体和指针来实现基本的栈功能。首先,我们需要定义一个节点(Node)结构,然后定义一个栈(Stack)类。
```cpp
// 链栈节点定义
struct Node {
int data;
Node* next; // 指向下一个节点的指针
};
// 链栈类定义
class Stack {
private:
Node* top; // 栈顶指针
public:
// 构造函数,初始化空栈
Stack() : top(nullptr) {}
// 入栈操作(push)
void push(int value) {
Node* newNode = new Node();
newNode->data = value;
newNode->next = top;
top = newNode;
}
// 出栈操作(pop),如果栈为空则返回错误
int pop() {
if (top == nullptr) {
throw std::runtime_error("Stack is empty");
}
int data = top->data;
Node* temp = top;
top = top->next;
delete temp;
return data;
}
// 查看栈顶元素(peek),不删除
int peek() const {
if (top == nullptr) {
throw std::runtime_error("Stack is empty");
}
return top->data;
}
// 判断栈是否为空
bool isEmpty() const {
return top == nullptr;
}
// 释放内存(清空栈)
~Stack() {
while (!isEmpty()) {
pop();
}
}
};
```
在这个例子中,`push()`方法用于将元素放入栈顶,`pop()`方法用于移除并返回栈顶元素,`peek()`方法查看栈顶元素而不改变其位置,`isEmpty()`用于检查栈是否为空。注意,这个实现没有处理异常,实际使用时需要加上适当的错误处理。
阅读全文