python資料結構之佇列(queue)

2021-08-14 13:26:34 字數 1527 閱讀 5492

佇列是一種特殊的線性表,先進先出,只允許在前端進行刪除,在後端進行插入操作,它的操作方式與堆疊類似,區別在於佇列只允許在後端插入資料。

在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相...