如何在C++中实现一个链栈以及它的基本操作,例如入栈和出栈?请提供相应的类定义和函数实现。
时间: 2024-11-08 18:13:36 浏览: 23
链栈是通过链表实现的栈结构,它克服了顺序栈在空间使用上的限制,可以灵活地进行动态扩展。以下是一个简单的链栈实现,包含类定义和基本操作的函数实现:
参考资源链接:[实验报告-数据结构与算法:栈和队列的实现](https://wenku.csdn.net/doc/2p0rp3jgx0?spm=1055.2569.3001.10343)
首先定义链栈节点类和链栈类:
```cpp
#include <iostream>
// 定义链栈的节点
class StackNode {
public:
int data; // 节点数据
StackNode* next; // 指向下一个节点的指针
StackNode(int d) : data(d), next(nullptr) {} // 构造函数
};
// 定义链栈类
class LinkStack {
private:
StackNode* top; // 指向栈顶的指针
public:
LinkStack() : top(nullptr) {} // 构造函数
~LinkStack() { clear(); } // 析构函数
// 判断栈是否为空
bool isEmpty() const {
return top == nullptr;
}
// 入栈操作
void push(int d) {
StackNode* newNode = new StackNode(d);
newNode->next = top;
top = newNode;
}
// 出栈操作
int pop() {
if (isEmpty()) {
throw std::out_of_range(
参考资源链接:[实验报告-数据结构与算法:栈和队列的实现](https://wenku.csdn.net/doc/2p0rp3jgx0?spm=1055.2569.3001.10343)
阅读全文