Python 栈与队列

2025年8月28日 | 阅读 3 分钟

数据结构是为了方便我们访问和修改数据而在计算机中组织存储的一种方式。栈和队列是计算机科学中最早定义的数据结构。简单的 Python 列表既可以充当队列,也可以充当栈。队列遵循“先进先出”(FIFO)原则,并在编程中用于排序。栈和队列通常用数组或链表实现。

Stack

栈是一种遵循“后进先出”(LIFO)原则的数据结构。要实现栈,我们需要两个简单的操作:

  • push - 将一个元素添加到栈顶。
  • pop - 从栈顶移除一个元素。
Python Stack and Queue Python Stack and Queue

操作

  • 添加 - 将元素添加到栈中并增加栈的大小。添加操作发生在栈顶。
  • 删除 - 包含两个条件:首先,如果栈中没有元素,则发生栈下溢;其次,如果栈中包含一些元素,则移除最顶端的元素。这会减小栈的大小。
  • 遍历 - 涉及访问栈中的每个元素。

特性

  • 栈的插入顺序得到保留。
  • 对解析操作有用。
  • 允许重复。

代码

输出

['Python', 'C', 'Android', 'Java', 'C++']
C++
['Python', 'C', 'Android', 'Java']
Java
['Python', 'C', 'Android']

Queue

队列遵循“先进先出”(FIFO)原则。它两端都可以访问,因此我们可以轻松地在后端添加元素,并从前端移除元素。

要实现队列,我们需要两个简单的操作:

  • enqueue - 将一个元素添加到队列末尾。
  • dequeue - 从队列开头移除一个元素。
Python Stack and Queue Python Stack and Queue

队列操作

  • 添加 - 将元素添加到队列中,发生在队尾,即队列的后端。
  • 删除 - 包含两个条件:如果队列中没有元素,则发生队列下溢;或者如果队列包含一些元素,则移除前端的元素。
  • 遍历 - 涉及访问队列中的每个元素。

特性

  • 队列的插入顺序得到保留。
  • 允许重复。
  • 对解析 CPU 任务操作有用。

注意: 队列的实现略有不同。队列遵循“先进先出”。时间在这里起着重要作用。栈速度很快,因为我们从列表的末尾插入和弹出元素,而在队列中,插入和弹出都在列表的开头进行,因此速度变慢。这种时间差异是由于列表的属性所致,列表在末尾操作时速度快,而在开头操作时速度慢,因为所有其他元素都必须逐个移动。

代码

输出

9
6
7
4

下一主题PySpark MLlib