資料結構 python 佇列

2021-10-05 16:02:54 字數 2757 閱讀 9822

佇列 (queue) 是一種特殊的線性表,特殊之處在於它只允許在表的前端(front)進行刪除操作,而在表的後端(rear)進行插入操作,和棧一樣,佇列是一種操作受限制的線性表。進行插入操作的端稱為隊尾,進行刪除操作的端稱為隊頭。佇列符合先進先出[fifo]的原則。

複雜度分析

佇列屬於常見的一種線性結構,對於出隊和進隊而言,時間複雜度都為 o(1)。

用鍊錶實現佇列

class

node

(object):

def__init__

(self, elem)

: self.elem = elem # 表示對應的元素值

self.

next

=none

class

queue

(object):

def__init__

(self)

: self.head =

none

# 頭部鏈點為 none

self.rear =

none

# 尾部鏈點為 none

defis_empty

(self)

:return self.head is

none

# 判斷佇列是否為空

defenqueue

(self, elem)

: p = node(elem)

# 初始化乙個新的點

if self.is_empty():

self.head = p # 佇列頭部為新的鏈點

self.rear = p # 佇列尾部為新的鏈點

else

: self.rear.

next

= p # 佇列尾部的後繼是這個新的點

self.rear = p # 然後讓佇列尾部指標指向這個新的點

defdequeue

(self)

:if self.is_empty():

# 判斷佇列是否為空

print

('queue_is_empty'

)# 若隊列為空,則退出 dequeue 操作

else

: result = self.head.elem # result為佇列頭部元素

self.head = self.head.

next

# 改變佇列頭部指標位置

return result # 返回佇列頭部元素

defpeek

(self)

:# 檢視佇列頭部的元素

if self.is_empty():

# 判斷佇列是否為空

print

('not_found'

)# 為空則返回 not_found

else

:return self.head.elem # 返回佇列頭部元素

defprint_queue

(self)

:print

("queue:"

) temp = self.head

myqueue =

# 暫時存放佇列資料

while temp is

notnone

: temp = temp.

next

print

(myqueue)

if __name__ ==

"__main__"

: queue = queue(

) queue.enqueue(21)

queue.enqueue(35)

queue.enqueue(58)

queue.enqueue(13)

queue.dequeue(

) queue.print_queue(

)

用陣列實現佇列

class

queue()

:def

__init__

(self)

: self.entries =

# 表示佇列內的引數

self.length =

0# 表示佇列的長度

self.front =

0# 表示佇列頭部位置

defenqueue

(self, item)

:# 新增元素到佇列裡面

self.length = self.length +

1# 佇列長度增加 1

defdequeue

(self)

: self.length = self.length -

1# 佇列的長度減少 1

dequeued = self.entries[self.front]

# 隊首元素為dequeued

self.front -=

1# 隊首的位置減少1

self.entries = self.entries[self.front:

]# 佇列的元素更新為退隊之後的佇列

return dequeued

defpeek

(self)

:return self.entries[0]

# 直接返回佇列的隊首元素

Python 資料結構 佇列

queue 佇列是一種先進先出 fifo 的資料型別,新的元素通過 入隊 的方式新增進 queue 的末尾,出隊 就是從 queue 的頭部刪除元素.用列表來做 queue queue 初始化乙個列表資料型別物件,作為乙個佇列 defenq 定義乙個入棧方法 提示輸入乙個入隊的 string 物件,...

python資料結構 佇列

佇列 queue 是只允許在一端進行插入操作,而在另一端進行刪除操作的線性表。佇列是一種先進先出的 first in first out 的線性表,簡稱fifo。允許插入的一端為隊尾,允許刪除的一端為隊頭。佇列不允許在中間部位進行操作!假設佇列是q a1,a2,an 那麼a1就是隊頭元素,而an是隊...

Python資料結構 佇列

佇列也是一系列有順序的元素的集合,新元素的加入在佇列的一端,叫做 隊尾 rear 已有元素的移除發生在佇列的另一端,叫做 隊首 front 和棧不同的是,佇列只能在隊尾插入元素,在隊首刪除元素。最新加入的元素必須處於隊尾,在佇列停留時間最長的元素處於隊首。可以把佇列想象成在銀行前排隊的人群,排在最前...