如何在C++中实现一个链栈以及它的基本操作,例如入栈和出栈?请提供相应的类定义和函数实现。
时间: 2024-11-08 11:13:35 浏览: 15
在数据结构的学习中,理解栈的概念及其操作对于掌握更高级的算法至关重要。为了深入探讨这一主题,你可以参考《实验报告-数据结构与算法:栈和队列的实现》这份资料。本资源不仅涵盖了栈和队列的定义和基本操作,还详细讲解了它们在C++中的实现方法,包括顺序栈、链栈、循环队列和链队列等。
参考资源链接:[实验报告-数据结构与算法:栈和队列的实现](https://wenku.csdn.net/doc/2p0rp3jgx0?spm=1055.2569.3001.10343)
下面是一个简单的链栈实现示例。首先,定义链栈的节点和链栈类:
```cpp
struct StackNode {
int data;
StackNode *next;
};
class LinkStack {
private:
StackNode *top; // 指向栈顶元素的指针
public:
LinkStack() : top(nullptr) {} // 构造函数,初始化栈为空
~LinkStack() { // 析构函数,销毁栈并释放内存
StackNode *current = top;
while (current != nullptr) {
StackNode *temp = current;
current = current->next;
delete temp;
}
}
bool isEmpty() const { // 判断栈是否为空
return top == nullptr;
}
void push(int value) { // 入栈操作
StackNode *newNode = new StackNode;
newNode->data = value;
newNode->next = top;
top = newNode;
}
int pop() { // 出栈操作
if (isEmpty()) {
throw std::runtime_error(
参考资源链接:[实验报告-数据结构与算法:栈和队列的实现](https://wenku.csdn.net/doc/2p0rp3jgx0?spm=1055.2569.3001.10343)
阅读全文