双端队列抽象数据类型及python实现

双端队列抽象数据类型及python实现

双端队列Deque是一种有次数的数据集
跟队列相似,其两端可以称为“首”, “尾”端,但deque中数据项既可以从队首加入,也可以从队尾加入;
数据项也可以从两端移除。
从某种意义上说,双端队列集成了栈和队列的能力。

但双端队列不具有内在的LIFO或者FIFO特性

如果用双端队列来模拟栈或队列
需要使用者自行维护操作的一致性

抽象数据类型Deque

Deque() :  创建一个空双端队列
addFront(item):  将item加入队首
addRear(item):  将item加入队尾
removeFront():  从队首移除数据项,返回值为移除的数据项
removeRear():  从队尾移除数据项,返回值为移除数据项
isEmpty():  返回deque是否为空
size() :   返回值deque中包含数据项的个数

采用List实现

List下标0作为deque的尾端
List下标-1作为deque的首端

操作复杂度

addFront/removeFront O(1)

addRear/removeRear O(n)

class Deque:
	def __init__(self):
		self.items = []
	def isEmpty(self):
		return self.items == []
	def addFront(self, item):
		self.items.append(item)
	def addRear(self, item):
		self.items.insert(0, item)
	def removeFront(self):
		return self.items.pop()
	def removeRear(self):
		return self.items.pop(0)
	def size(self):
		return len(self.items)
发布了25 篇原创文章 · 获赞 3 · 访问量 489

猜你喜欢

转载自blog.csdn.net/qq_44045101/article/details/103263555