【数据结构与算法Python版学习笔记】基本数据结构——双端队列 Deque
定义
-
双端队列(deque 或 double-ended queue)与队列类似,也是一系列元素的有序组合。其两端称为队首(front)和队尾(rear),元素在到达两端之前始终位于双端队列中。
-
元素可以从两端插入,也可以从两端删除。
-
数据项不满足严格的“后进先出”或“先进先出”顺序,需自行维护
抽象数据类型Deque
-
Deque()
创建一个空双端队列,无参数,返回值为 Deque 对象。 -
addFront(item)
在队首插入一个元素,参数为待插入元素,无返回值。O(1) -
addRear(item)
在队尾插入一个元素,参数为待插入元素,无返回值。O(n) -
removeFront()
在队首移除一个元素,无参数,返回值为该元素。双端队列会被改变。O(1) -
removeRear()
在队尾移除一个元素,无参数,返回值为该元素。双端队列会被改变。O(n) -
isEmpty()
判断双端队列是否为空,无参数,返回布尔值。 -
size()
返回双端队列中数据项的个数,无参数,返回值为整型数值。
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)
应用
回文词判定
def palchecher(aString):
chardeque = Deque()
for ch in aString:
chardeque.addFront(ch)
stillEqual = True
while chardeque.size() > 1 and stillEqual:
first = chardeque.removeFront()
last = chardeque.removeRear()
if first != last:
stillEqual = False
return stillEqual
if __name__ == "__main__":
print(palchecher("lsdkjskf"))
print(palchecher("radar"))
作者:砥才人
出处:https://www.cnblogs.com/shiroe
本系列文章为笔者整理原创,只发表在博客园上,欢迎分享本文链接,如需转载,请注明出处!