棧與雙端佇列
阿新 • • 發佈:2018-12-11
ps:棧的本質是列表,雙端佇列的本質也是列表 下圖是基礎程式碼及驗證例項: 1、棧
class Stack(object): '''棧''' def __init__(self): self.__items=[] def is_empty(self): '''判斷是否為空''' return self.__items == [] def push(self,items): '''往尾部加入元素''' self.__items.append(items) def peek(self): '''棧頂元素保持不變,只是檢視''' if self.__items: return self.__items[-1] else: return [] def pop(self): '''出棧''' return self.__items.pop() def is_empty(self): '''判斷是否為空''' return not self.__items def size(self): '''返回的個數''' return len(self.__items) if __name__=='__main__': s = Stack() s.push(1) s.push(2) s.push(3) s.push(4) print(s.pop()) print(s.pop()) print(s.pop()) print(s.pop())
2、雙端佇列:
class Deque(object): def __init__(self): '''定義雙端佇列的列表''' self.__list = [] def add_front(self,item): '''從頭部增加元素''' self.__list.insert(0,item) def add_rear(self,item): '''從尾部增加元素''' self.__list.append(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): '''返回佇列的大小''' return len(self.__list) if __name__=="__main__": s = Deque() s.add_front(1) s.add_front(2) s.add_front(3) s.add_front(4) print(s.pop_rear()) print(s.pop_rear()) print(s.pop_rear()) print(s.pop_rear())