概述
双端队列(deque,全名double-ended queue)是一种具有队列和栈性质的线性数据结构。双端队列也拥有两端:队首(front)、队尾(rear),但与队列不同的是,插入操作在两端(队首和队尾)都可以进行,删除操作也一样。
双端队列的数据存储结构可以是顺序表,也可以是链表,即顺序双端队列和链双端队列。
图片.png
双端队列ADT(抽象数据类型)一般提供以下接口:
Deque() 创建双端队列
insert(item) 向队首插入项
append(item) 向队尾插入项
popFront() 返回队首的项,并从双端队列中删除该项
pop() 返回队尾的项,并从双端队列中删除该项
isEmpty() 判断双端队列是否为空
size() 返回双端队列中项的个数
get(index) 返回对列中的对象
show() 对象遍历
操作示意图:
图片.png
顺序双端队列
顺序双端队列是使用顺序表存储数据的双端队列,Python 中的列表元组都属于顺序表,下面使用列表来存储数据,实现顺序双端队列。
class SeQueue(object):
def __init__(self):
self.__members = list()
def isEmpty(self):
return not len(self.__members)
def show(self):
if self.isEmpty():
return
for member in self.__members:
if self.__members.index(member) != len(self.__members) - 1:
print(member, end=',