"这篇文档介绍了如何使用Python模拟两种基本的数据结构——栈和队列,并提供了相关的类定义和操作方法。栈是一种后进先出(LIFO)的数据结构,而队列则是先进先出(FIFO)的数据结构。"
在Python中,我们可以自定义类来实现这些数据结构,以满足特定的需求。下面是对提供的代码段的详细解释:
**栈(Stack)**:
- `Stack()`:初始化函数,用于创建一个新的空栈,通过`self.items`列表存储栈内的元素。
- `push(item)`:将`item`压入栈顶,使用`append()`方法将元素添加到列表的末尾,无返回值。
- `pop()`:从栈顶弹出元素,使用`pop()`方法移除并返回列表的最后一个元素,从而修改了栈的状态。
- `peek()`:查看栈顶元素但不删除,返回`self.items`列表的最后一个索引(倒数第一个元素),由于列表索引从0开始,因此返回`len(self.items) - 1`。
- `isEmpty()`:检查栈是否为空,如果`self.items`列表为空则返回`True`,否则返回`False`。
- `size()`:返回栈内元素的数量,通过`len()`函数获取`self.items`列表的长度。
**队列(Queue)**:
- `Queue()`:初始化函数,创建一个新的空队列,同样使用`self.items`列表存储队列内的元素。
- `enqueue(item)`:将`item`添加到队尾,使用`insert(0, item)`将元素插入到列表的开头,无返回值。
- `dequeue()`:从队首移除元素,使用`pop()`方法移除并返回列表的最后一个元素,即队尾元素,修改了队列状态。
- `isEmpty()`:检查队列是否为空,与栈的判断方式相同。
- `size()`:返回队列内元素的数量,同样使用`len()`函数获取`self.items`列表的长度。
示例中还展示了如何使用这些类实例化栈和队列,并进行相关操作。例如,栈`s`被创建并添加了三个元素1、2、3,然后依次执行`pop()`操作移除元素;队列`q`则添加了两个元素1和未完成的2,展示了如何插入和移除元素。
通过模拟这些基本数据结构,开发者可以在Python程序中实现更复杂的数据管理逻辑,如回溯算法、深度优先搜索(DFS)、广度优先搜索(BFS)等。熟悉并能够灵活运用这些数据结构是解决许多计算机科学问题的关键。