雙端佇列
雙端佇列(deque,全名double-ended queue),是⼀種具有佇列和棧的
性質的資料結構。
雙端佇列中的元素可以從兩端彈出,其限定插⼊和刪除操作在表的兩端進
⾏。雙端佇列可以在佇列任意⼀端⼊隊和出隊。
操作
**實現
class deque(object):
"""雙端佇列"""
def __init__(self):
self.items =
def is_empty(self):
"""判斷佇列是否為空"""
return self.items ==
def add_front(self, item):
"""在隊頭新增元素"""
self.items.insert(0,item)
def add_rear(self, item):
"""在隊尾新增元素"""
def remove_front(self):
"""從隊頭刪除元素"""
return self.items.pop(0)
def remove_rear(self):
"""從隊尾刪除元素"""
return self.items.pop()
def size(self):
"""返回佇列⼤⼩"""
return len(self.items)
if __name__ == "__main__":
deque = deque()
deque.add_front(1)
deque.add_front(2)
deque.add_rear(3)
deque.add_rear(4)
print deque.size()
print deque.remove_front()
print deque.remove_front()
print deque.remove_rear()
print deque.remove_rear()
用雙端佇列實現單調佇列
單調佇列是指 佇列中元素之間的關係具有單調性,而且,隊首和隊尾都可以進行出隊操作,只有隊尾可以進行入隊操作。以單調不減隊列為例 佇列內的元素 e1,e2,e3.en 存在 e1 e2 e3 en 的關係,所以隊首元素e1一定是最小的元素。與優先佇列不同的是,當有乙個新的元素e入隊時,先要將隊尾的所有...
python實現雙端佇列
雙端佇列 一種具有佇列和棧的性質和資料結構 雙端佇列中的元素可以從兩端彈出,其限定插入和刪除操作,在表的兩端進行,雙端佇列可以在佇列任意一端入隊和出隊 class deque 雙端佇列 def init self self.list def add front self,item 往佇列中新增乙個i...
python實現佇列和雙端佇列
對於佇列而言,總有一端的複雜度是o n 一端是o 1 我們可以根據是取的多還是入的多調整方法。class queue object 佇列 def init self self.items def is empty self return self.items def enqueue self,ite...