用Python實現雙端佇列

2021-09-03 07:08:29 字數 1213 閱讀 6561

雙端佇列

雙端佇列(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...