Python教程-Python 栈和队列
数据结构组织计算机中的存储,以便我们可以轻松访问和更改数据。栈(Stack)和队列(Queue)是计算机科学中最早定义的数据结构。一个简单的 Python 列表既可以充当队列,也可以充当栈。队列遵循先进先出(FIFO)规则,并且在编程中用于排序。通常使用数组或链表来实现栈和队列。
栈(Stack)
栈是一种遵循后进先出(LIFO)原则的数据结构。要实现一个栈,我们需要两个简单的操作:
- push(推入) - 将一个元素添加到栈的顶部。
- pop(弹出) - 从栈的顶部移除一个元素。
操作:
- 添加 - 将项目添加到栈中并增加栈的大小。添加发生在栈的顶部。
- 删除 - 它有两种情况,首先,如果栈中没有元素,则栈会发生下溢,其次,如果栈包含一些元素,则会删除最顶部的元素。它会减小栈的大小。
- 遍历 - 它涉及访问栈的每个元素。
特点:
- 栈的插入顺序得到保留。
- 对解析操作很有用。
- 允许重复项。
代码示例
# Code to demonstrate Implementation of
# stack using list
x = ["Python", "C", "Android"]
x.push("Java")
x.push("C++")
print(x)
print(x.pop())
print(x)
print(x.pop())
print(x)
输出:
['Python', 'C', 'Android', 'Java', 'C++']
C++
['Python', 'C', 'Android', 'Java']
Java
['Python', 'C', 'Android']
队列(Queue)
队列遵循先进先出(FIFO)原则。它从两端打开,因此我们可以轻松地将元素添加到后面,并且可以从前面删除元素。
要实现一个队列,我们需要两个简单的操作:
- enqueue(入队) - 将一个元素添加到队列的末尾。
- dequeue(出队) - 从队列的开头移除一个元素。
队列的操作
- 添加 - 在队列中添加元素,发生在队列的末尾,即队列的后面。
- 删除 - 它由两种情况组成 - 如果队列中没有元素,则队列会发生下溢,或者如果队列包含一些元素,则位于前端的元素会被删除。
- 遍历 - 它涉及访问队列的每个元素。
特点:
- 队列的插入顺序得到保留。
- 允许重复项。
- 对解析 CPU 任务操作很有用。
注意: 队列的实现有点不同。队列遵循“先进先出”的原则。时间在这里起着重要作用。栈很快,因为我们从列表的末尾插入和弹出元素,而在队列中,插入和弹出是从列表的开头进行的,因此速度较慢。这种时间差异的原因是列表的属性,它在末尾操作上很快,但在开头操作上较慢,因为所有其他元素都必须逐个移动。
代码示例
import queue
# Queue is created as an object 'L'
L = queue.Queue(maxsize=10)
# Data is inserted in 'L' at the end using put()
L.put(9)
L.put(6)
L.put(7)
L.put(4)
# get() takes data from
# from the head
# of the Queue
print(L.get())
print(L.get())
print(L.get())
print(L.get())
输出:
9
6
7
4