實現雙端佇列

2022-03-17 05:22:30 字數 1526 閱讀 5155

1. 雙端佇列是乙個限定插入和刪除操作的資料結構,具有佇列和棧的性質。

2. 雙端佇列中的元素可以從兩端彈出,其限定插入和刪除操作在表的兩端進行。

3. 雙端佇列是指允許兩端都可以進行入隊和出隊操作的佇列,其元素的邏輯結構仍是線性結構。將佇列的兩端分別稱為前端和後端,兩端都可以入隊和出隊。

利用python的list來實現

簡潔版:

class deque(object):

def __init__(self):

self.__list =

def add_front(self, item):

self.__list.insert(0, item)

def add_rear(self, item):

def pop_front(self):

return self.__list.pop(0)

def pop_rear(self):

return self.__list.pop()

def is_empty(self):

return self.__list ==

def size(self):

if self.__list:

return len(self.__list)

else:

return none

注釋版:
class deque(object):

"""雙端佇列"""

def __init__(self):

"""初始化函式, 建立乙個佇列[python中的空鍊錶]"""

self.__list =

def add_front(self, item):

"""首部新增元素"""

self.__list.insert(0, item)

def add_rear(self, item):

"""尾部新增元素"""

def pop_front(self):

"""首部刪除元素"""

return self.__list.pop(0)

def pop_rear(self):

"""尾部刪除元素"""

return self.__list.pop()

def is_empty(self):

"""是否為空佇列"""

return self.__list ==

# 等價於 return not self.__list

def size(self):

"""佇列的長度"""

if self.__list:

return len(self.__list)

else:

return none

"""注意: 空列表不能使用切片, 如果列表不為空, 返回長度, 反之返回none"""

堆疊 佇列 雙端佇列實現

author hao rui chun class stack object def init self self.lis defpush self,item 入棧 defpop self 出棧 self.lis.pop def peek self 獲取棧頂元素 if self.lis return...

python實現雙端佇列

雙端佇列 一種具有佇列和棧的性質和資料結構 雙端佇列中的元素可以從兩端彈出,其限定插入和刪除操作,在表的兩端進行,雙端佇列可以在佇列任意一端入隊和出隊 class deque 雙端佇列 def init self self.list def add front self,item 往佇列中新增乙個i...

雙端鏈式佇列實現

雙端佇列,使用雙向鍊錶實現 隊頭 隊尾都可以進行入隊 出隊操作的佇列 雙端佇列的每一端都是乙個棧,都符合棧先進後出的特性 雙端佇列是一種多功能的資料結構,可以使用它來提供佇列和棧兩種功能 include include queue.h typedef struct doublelinknodedou...