隊列的實現
阿新 • • 發佈:2017-12-24
顯示 blog 存儲 先進先出 是把 () 實現 第一個 __main__
1 # -*- coding:utf-8 -*- 2 """ 3 隊列的特點是 先進先出 ,一般有一下操作 4 enqueue 將一個元素存入隊列中 5 dequeue 將一個元素從隊列中取出, 並在隊列中刪除他 6 7 empty 查看隊列是否是空 8 """ 9 10 11 # Node類是一個節點, 有兩個屬性, 一個是存儲元素, 一個指向另一節點的引用 12 class Node(object): 13 def __init__(self, element=None, next=None): 14 self.element = element15 self.next = next 16 17 # 這個函數是在使用print的時候被自動調用, 就是把這個Node顯示出來 18 def __repr__(self): 19 return str(self.element) 20 21 22 class Queue(object): 23 # 初始化函數, 自動被調用 24 # 初始化Queue()類的時候, 他有兩個屬性, 分別指向頭尾 25 def __init__(self): 26 self.head = Node() 27 self.tail = self.head28 29 # 如果head的next屬性為空, 說明隊列是空的 這裏不能是head的element 30 def empty(self): 31 return self.head.next is None 32 33 # 創建一個node 34 # 讓tail.next指向ta 35 # 讓tail指向他, tail現在就是新的隊尾 36 def enqueue(self, element): 37 n = Node(element) 38 self.tail.next = n 39 self.tail = n40 41 # 取出head.next指向的元素, 如果隊列不是空的, 就讓head.next指向node.next, 42 # 這樣node就不在隊列中 43 def dequeue(self): 44 node = self.head.next 45 if not self.empty(): 46 self.head.next = node.next 47 # 看看是不是只有一個元素, 如果是的話, 48 # 讓讓tail指回第一個Node 49 if self.head.next == None: 50 self.tail = self.head 51 return node 52 53 def test(): 54 q = Queue() 55 q.enqueue(1) 56 print(q.dequeue()) 57 q.enqueue(1) 58 print(q.dequeue()) 59 print(q.dequeue()) 60 print(q.dequeue()) 61 print(q.dequeue()) 62 63 if __name__ == "__main__": 64 test()
隊列的實現