資料結構 佇列 雙端佇列

2021-10-02 14:23:41 字數 1725 閱讀 7433

佇列(queue)是只允許在一端進行插入操作,而在另一端進行刪除操作的線性表。佇列是一種先進先出(first in first out)的線性表,簡稱fifo。允許插入的一端為隊尾,允許刪除的一端為對頭。佇列不允許在中間部位進行操作。假設佇列是q=,那麼a1就是對頭元素,而an是隊尾元素。這樣我們就可以刪除時,總是從a1開始,而插入時,總是在佇列最後。這也比較符合我們通常生活中的習慣,排在第乙個的優先出列,最後來的當然排在最後。

class queue(object):

"""佇列"""

def __init__(self):

self.__list =

def enqueue(self, item):

"""往佇列中新增乙個item元素"""

# self.__list.insert(0, item) #o(n)

def dequeue(self):

"""從佇列頭部刪除乙個元素"""

return self.__list.pop(0) # o(n)

# self.__list.pop()# o(1)

def is_empty(self):

"""判斷乙個佇列是否為空"""

return self.__list ==

def size(self):

"""返回佇列的大小"""

return len(self.__list)

if __name__ == "__main__":

q = queue()

q.enqueue(1)

q.enqueue(2)

q.enqueue(3)

q.enqueue(4)

print(q.dequeue())

print(q.dequeue())

print(q.dequeue())

print(q.dequeue())

雙端佇列(deque,全名double-ended queue),是一種具有佇列和棧的性質的資料結構。雙端佇列中的元素可以從兩端彈出,其限定插入和刪除操作在表的兩端進行,雙端佇列可以在佇列任意一端入隊和出隊。

class deque(object):

"""雙端佇列"""

def __init__(self):

self.__list =

def add_front(self, item):

"""往隊頭加入乙個item元素"""

self.__list.insert(0, item)

def add_rear(self, item):

"""往隊尾加入乙個item元素"""

def pop_front(self):

"""從隊頭刪除乙個item元素"""

return self.__list.pop(0)

def pop_rear(self):

"""從隊尾刪除乙個item元素"""

return self.__list.pop()

def is_empty(self):

"""判斷雙端佇列是否為空"""

return self.__list ==

def size(self):

"""返回佇列的大小"""

return len(self.__list)

if __name__ == "__main__":

q = deque()

資料結構 佇列 普通佇列和雙端佇列

佇列 queue 建立乙個空佇列 enqueue item 新增元素 dequeue 從佇列頭部刪除乙個元素 is empty 判斷乙個佇列是否為空 size 返回佇列的大小 class queue object 佇列 def init self self.items defis empty sel...

資料結構之雙端佇列

摘要 有時候乙個佇列可能需要能從兩端進出,這時候稱呼它為雙端佇列。具體思路很簡單,從 可以直接看出來。include stdafx.h include malloc.h include stdlib.h typedef struct dequeuerecord queue struct dequeu...

python資料結構 雙端佇列

deque,全名double ended queue 佇列和棧的性質的資料結構 雙端佇列中的元素可以從兩端彈出,其限定插入和刪除操作在表的兩端進行。雙端佇列可以在佇列任意一端入隊和出隊。usr bin env python coding utf 8 created by xuehz on 2017 ...