数据结构实现若干次进出栈
时间: 2024-11-03 07:04:41 浏览: 0
数据结构复习(1).doc
数据结构中的栈是一种特殊的数据容器,遵循"先进后出"(Last In First Out, LIFO)的原则。如果你想实现多次进出栈的操作,你可以考虑使用数组或链表这两种基本的栈实现方式:
1. 数组实现栈(固定大小):
- 定义一个数组作为栈的基础存储单元。
- 使用两个指针 `top` 和 `size` 分别表示栈顶元素的位置和当前栈的大小。
- 进栈操作 (`push`) 将元素放在 `top+1` 的位置,并更新 `top` 和 `size`。
- 出栈操作 (`pop`) 返回并移除 `top` 指向的元素,然后将 `top` 后移一位。
2. 链表实现栈(动态大小):
- 使用链表节点,每个节点包含一个值和一个指向下一个节点的指针(或者前驱节点)。
- 对于进出栈,分别创建 `push` 和 `pop` 方法:
- `push`:新建一个节点并将它添加到链表头部。
- `pop`:删除并返回链表头部的节点,若栈为空则抛异常。
实现进出栈的具体代码会因语言的不同而有所差异,比如在Python中,可以使用列表(数组实现)或链表库(如`collections.deque`)来快速实现。下面是简单的Python示例:
```python
class Stack:
def __init__(self):
self.stack = []
# push 入栈
def push(self, item):
self.stack.append(item)
# pop 出栈
def pop(self):
if not self.is_empty():
return self.stack.pop()
else:
raise IndexError("Stack is empty")
# 判断是否空
def is_empty(self):
return len(self.stack) == 0
# 使用示例
stack = Stack()
stack.push(1)
stack.push(2)
print(stack.pop()) # 输出 2
```
阅读全文