版权声明:作者:Rookiekk 联系邮箱:[email protected] 欢迎转载或分享,但请务必声明文章出处。 https://blog.csdn.net/qq_18888869/article/details/88137237
deque(也称为双端队列)是与队列类似的项的有序集合。即使 deque 可以拥有栈和队列的许多特性,它不需要由那些数据结构强制的 LIFO 和 FIFO 排序。这取决于你如何持续添加和删除操作。
1.Deque抽象数据类型
deque 抽象数据类型由以下结构和操作定义。如上所述,deque 被构造为项的有序集合,其中项从首部或尾部的任一端添加和移除。下面给出了 deque 操作。
- Deque() 创建一个空的新 deque。它不需要参数,并返回空的 deque。
- addFront(item) 将一个新项添加到 deque 的首部。它需要 item 参数 并不返回任何内容。
- addRear(item) 将一个新项添加到 deque 的尾部。它需要 item 参数并不返回任何内容。
- removeFront() 从 deque 中删除首项。它不需要参数并返回 item。deque 被修改。
- removeRear() 从 deque 中删除尾项。它不需要参数并返回 item。deque 被修改。
- isEmpty() 测试 deque 是否为空。它不需要参数,并返回布尔值。
- size() 返回 deque 中的项数。它不需要参数,并返回一个整数。
2.python实现Deque
#dequeue
class Dequeue(object):
def __init__(self):
self.items = list()
def addFront(self, item):
self.items.insert(0, item)
def addRear(self, item):
self.items.append(item)
def removeFront(self):
return self.items.pop(0)
def removeRear(self):
return self.items.pop()
def isEmpty(self):
return self.items == []
def size(self):
return len(self.items)
3.实例应用
回文检查:
#回文检查
def palchecker(aString):
deque = Deque()
for s in aString:
deque.addRear(s)
font = deque.removeFront()
rear = deque.removeRear()
flag = True
while deque.size() > 1 and flag:
font = deque.removeFront()
rear = deque.removeRear()
if font != rear:
flag = False
break
return flag
print(palchecker("abjlksdj"))
print(palchecker("abccba"))
其他线性数据结构:
栈:https://mp.csdn.net/postedit/88086002
队列:https://blog.csdn.net/qq_18888869/article/details/88134592
列表(栈):https://blog.csdn.net/qq_18888869/article/details/88138785