链式栈的定义及基本操作 (1)初始化一个链栈 LinkStack。 (2)判断栈是否为空。 (3)将元素 2,4,6 依次进栈。 (4)获取栈顶元素。 (5)将栈中元素依次出栈并输出。
时间: 2024-10-29 09:19:35 浏览: 13
用C++实现一个链式栈的实例代码
5星 · 资源好评率100%
链式栈(也称为链表栈),是一种基于链表实现的数据结构,它通过头节点和指向下一个节点的指针来模拟栈的后入先出(LIFO,Last In First Out)特性。以下是链式栈的基本定义及操作:
1. 初始化一个链栈 `LinkStack`:
- 创建一个链式栈通常需要定义两个成员变量:一个表示栈顶节点的 `top` 和一个空链表的头部 `head`。在创建时,设置 `top` 为 `null` 表示栈为空。
```c++
struct Node {
int data;
Node* next;
};
class LinkStack {
private:
Node* top;
public:
LinkStack() : top(nullptr) {}
};
```
2. 判断栈是否为空:
- 使用 `top == nullptr` 来检查链栈是否为空。
```c++
bool isEmpty(LinkStack& stack) {
return stack.top == nullptr;
}
```
3. 将元素 2、4、6 进栈:
- 分别创建新的 `Node` 并存储数据,然后将其添加到链表的顶部,更新 `top` 指向新节点。
```c++
void push(LinkStack& stack, int value) {
Node* newNode = new Node{value, stack.top};
stack.top = newNode;
}
```
4. 获取栈顶元素:
- 如果栈非空,则返回 `top` 的 `data`;否则抛出异常或返回默认值。
```c++
int peek(LinkStack& stack) {
if (isEmpty(stack)) {
throw std::runtime_error("Stack is empty");
}
return stack.top->data;
}
```
5. 出栈并将元素依次输出:
- 删除栈顶元素,更新 `top` 指针,并打印删除的元素。
```c++
void popAndPrint(LinkStack& stack) {
if (isEmpty(stack)) {
throw std::runtime_error("Stack is empty");
}
Node* temp = stack.top;
stack.top = stack.top->next;
delete temp;
std::cout << temp->data << " ";
}
```
阅读全文