佇列是一種特殊的線性表,先進先出,只允許在前端進行刪除,在後端進行插入操作,它的操作方式與堆疊類似,區別在於佇列只允許在後端插入資料。
在python中有相應的類:
import queue
q = queue.queue()
for i in range(4):
q.put(i) #將乙個值放入佇列中
while
not q.empty():
print q.get(), #將值取出
#先進先出的,你應該猜到了會輸出什麼。01
23
條件:
因此設計相應的演算法:
如果列表為空,頭節點和末節點均指向新節點node
否則,放到末節點之後
class
node
(object):
def__init__
(self,data):
self.data = data
self.next = none
class
queue
(object):
def__init__
(self):
self.head = none
self.tail = none
defenqueue
(self,data):
node = node(data)
if self.head is
none
and self.tail is
none:
self.head = node
self.tail = node
else:
self.tail.next = node
self.tail = node
演算法的時間,空間複雜度均為o(1)
出隊則要分成三種情況討論:
要出的隊列為空,只有乙個節點,或者有不止乙個節點,設計如下演算法:
def
dequeue
(self):
if self.head is
none
and self.tail is
none:
return
none
data = self.head.data
if self.head == self.tail:
self.head = none
self.tail = none
else:
self.head = self.head.next
return data
演算法的時間,空間複雜度均為o(1)
q = queue.lifoqueue()
for i in range(5):
q.put(i)
while
not q.empty():
print q.get(),
#輸出:4 3 2 1 0
python資料結構之佇列
一 介紹 1 可以把列表當做佇列用,只是在佇列裡第一加入的元素,第乙個取出來。2 拿列表用作這樣的目的效率不高。在列表的最後新增或者彈出元素速度快,然而在列表裡插入或者從頭部彈出速度卻不快 因為所有其他的元素都得乙個乙個地移動 二 應用內建的佇列模組 from collections import ...
資料結構之佇列(Python 版)
佇列的特點 先進先出 fifo 使用單鏈表技術,在表首尾兩端分別加入指標,就很容易實現佇列類。1 佇列類的實現23 class squeue 45 def init slef,init len 8 6 self.len init len 儲存區長度 7 self.elems 0 init le 元素...
資料結構之佇列
八 佇列 鏈式佇列 鍊錶實現 隊尾 rear 隊首 front 靜態佇列 陣列實現 必須是迴圈佇列 需要幾個引數來確定,各引數含義 1 佇列初始化 front和rear值都是0 2 佇列非空 front代表佇列第乙個元素 rear代表佇列最後乙個元素的 下乙個元素 3 佇列空 front和rear相...