python 資料結構之佇列和棧
阿新 • • 發佈:2018-12-26
# 棧是一種特殊的線性表,僅能線上性表的一端操作,棧頂允許操作,棧底不允許操作。 # 棧的特性:後進先出 class Stack(object): """棧""" def __init__(self): self.items=[] def is_empty(self): """判斷是否為空""" return self.items==[] def push(self,item): '''加入元素''' self.items.append(item) def pop(self): '''彈出元素''' return self.items.pop() def peek(self): """返回棧頂元素""" return self.items[len(self.items)-1] def size(self): '''返回棧的大小''' return len(self.items)
#同棧一樣,佇列也可以用順序表或者連結串列實現, 佇列是一種可以實現“先進先出”的儲存結構。 class Queue(): '''佇列''' def __init__(self): self.items=[] def enqueue(self,item): """往佇列中加入一個item""" self.items.insert(0,item) def queue_pop(self): '''從佇列頭部刪除一個元素''' return self.items.pop() def is_empty(self): '''判斷佇列是否為空''' return self.items==[] def size(self): return len(self.items)
#雙端佇列:是一種具有佇列和棧的性質的資料結構。 # 雙端佇列中的元素可以從兩端彈出,其限定插入和刪除操作在表的兩端進行。雙端佇列可以在佇列任意一端入隊和出隊。 class DoubleQueue(object): '''雙端佇列''' def __init__(self): '''建立一個空的雙端佇列''' self.items=[] def add_font(self,item): '''從隊頭加入一個item元素''' self.items.insert(0,item) def add_rear(self,item): '''從尾部新增元素''' self.items.append(item) def remove_font(self,item): '''從隊頭刪除一個元素''' return self.items.pop(0) def remove_rear(self): '''從尾部刪除一個元素''' return self.items.pop() def is_empty(self): '''判斷佇列是否為空''' return self.items==[] def size(self): '''判斷佇列的大小''' return len(self.items)