python數據結構與算法(11)
阿新 • • 發佈:2018-11-29
允許 鏈表 __init__ sel 出隊 add 這也 ext shadow 隊列
隊列(queue)是只允許在?端進?插?操作,?在另?端進?刪除操作的 線性表。
隊列是?種先進先出的(First In First Out)的線性表,簡稱FIFO。允許插? 的?端為隊尾,允許刪除的?端為隊頭。隊列不允許在中間部位進?操作! 假設隊列是q=(a1,a2,……,an),那麽a1就是隊頭元素,?an是隊尾 元素。這樣我們就可以刪除時,總是從a1開始,?插?時,總是在隊列最 後。這也?較符合我們通常?活中的習慣,排在第?個的優先出列,最後來 的當然排在隊伍最後。
隊列的實現
同棧?樣,隊列也可以?順序表或者鏈表實現。
操作
Queue() 創建?個空的隊列 enqueue(item) 往隊列中添加?個item元素 dequeue() 從隊列頭部刪除?個元素 is_empty() 判斷?個隊列是否為空 size() 返回隊列的??
雙端隊列中的元素可以從兩端彈出,其限定插?和刪除操作在表的兩端進 ?。雙端隊列可以在隊列任意?端?隊和出隊。
隊列(queue)是只允許在?端進?插?操作,?在另?端進?刪除操作的 線性表。
隊列是?種先進先出的(First In First Out)的線性表,簡稱FIFO。允許插? 的?端為隊尾,允許刪除的?端為隊頭。隊列不允許在中間部位進?操作! 假設隊列是q=(a1,a2,……,an),那麽a1就是隊頭元素,?an是隊尾 元素。這樣我們就可以刪除時,總是從a1開始,?插?時,總是在隊列最 後。這也?較符合我們通常?活中的習慣,排在第?個的優先出列,最後來 的當然排在隊伍最後。
隊列的實現
同棧?樣,隊列也可以?順序表或者鏈表實現。
操作
Queue() 創建?個空的隊列 enqueue(item) 往隊列中添加?個item元素 dequeue() 從隊列頭部刪除?個元素 is_empty() 判斷?個隊列是否為空 size() 返回隊列的??
class Queue(object): """隊列""" def __init__(self): self.items = [] def is_empty(self): return self.items == [] def enqueue(self, item): """進隊列""" self.items.insert(0,item) def dequeue(self): """出隊列""" return self.items.pop() def size(self): """返回??""" return len(self.items) if __name__ == "__main__": q = Queue()
隊列的實現
q.enqueue("hello") q.enqueue("world") q.enqueue("itcast") print q.size() print q.dequeue() print q.dequeue() print q.dequeue()[/size][/font]
[font=微軟雅黑][size=3]
雙端隊列
雙端隊列(deque,全名double-ended queue),是?種具有隊列和棧的性 質的數據結構。
操作
Deque() 創建?個空的雙端隊列 add_front(item) 從隊頭加??個item元素 add_rear(item) 從隊尾加??個item元素 remove_front() 從隊頭刪除?個item元素 remove_rear() 從隊尾刪除?個item元素 is_empty() 判斷雙端隊列是否為空 size() 返回隊列的??
實現
class Deque(object): """雙端隊列""" def __init__(self): self.items = []
def is_empty(self): """判斷隊列是否為空"""
return self.items == []
def add_front(self, item): """在隊頭添加元素""" self.items.insert(0,item)
def add_rear(self, item): """在隊尾添加元素""" self.items.append(item)
def remove_front(self): """從隊頭刪除元素""" return self.items.pop(0)
def remove_rear(self): """從隊尾刪除元素""" return self.items.pop()
def size(self): """返回隊列??""" return len(self.items)
if __name__ == "__main__": deque = Deque() deque.add_front(1) deque.add_front(2) deque.add_rear(3) deque.add_rear(4) print deque.size() print deque.remove_front() print deque.remove_front() print deque.remove_rear() print deque.remove_rear()
python數據結構與算法(11)