双端队列(Deque,全称:Double-ended Queue)是一种线性数据结构,它允许在队列的两端进行插入和删除操作。与普通队列(只能在尾部插入,在头部删除)和栈(只能在尾部插入,在头部删除)不同,双端队列可以在两端进行插入和删除操作。
双端队列的常用操作包括:
- addFirst(E e):在双端队列的头部插入元素
- addLast(E e):在双端队列的尾部插入元素
- removeFirst():移除并返回双端队列的头部元素
- removeLast():移除并返回双端队列的尾部元素
- getFirst():获取但不移除双端队列的头部元素
- getLast():获取但不移除双端队列的尾部元素
- isEmpty():判断双端队列是否为空
- size():返回双端队列中的元素数量
使用双端队列的场景: - 需要频繁地在队列的两端进行插入和删除操作。
- 需要根据队列头部的元素进行某些操作,例如排序、查找等。
推荐 Demo:
下面是一个使用 Python 实现的双端队列的简单示例:
from collections import deque
创建一个双端队列
dq = deque(["A", "B", "C"])
在双端队列的头部插入元素
dq.addFirst("Z")
在双端队列的尾部插入元素
dq.addLast("Y")
获取双端队列的头部元素
print(dq.getFirst()) # 输出:Z
获取双端队列的尾部元素
print(dq.getLast()) # 输出:Y
移除并返回双端队列的头部元素
print(dq.removeFirst()) # 输出:Z
移除并返回双端队列的尾部元素
print(dq.removeLast()) # 输出:Y
判断双端队列是否为空
print(dq.isEmpty()) # 输出:False
返回双端队列中的元素数量
print(dq.size()) # 输出:3
CopyCopy
在这个示例中,我们创建了一个双端队列,并在队列的两端插入和删除了一些元素。最后,我们使用了双端队列的一些方法来获取队列中的元素、判断队列是否为空以及获取队列的长度。