Python 資料結構 佇列

2021-07-22 06:12:40 字數 1637 閱讀 1815

queue 佇列是一種先進先出(fifo)的資料型別, 新的元素通過 入隊 的方式新增進 queue 的末尾, 出隊 就是從 queue 的頭部刪除元素.

用列表來做 queue:

queue =                  # 初始化乙個列表資料型別物件, 作為乙個佇列

defenq

():# 定義乙個入棧方法

# 提示輸入乙個入隊的 string 物件, 呼叫 str.strip() 保證輸入的 string 值不包含多餘的空格

defdeq

():# 定義乙個出隊方法

if len(queue) == 0:

print

"cannot pop from an empty queue!"

else:

print

'remove [', `queue.pop(0)`, ']'

# 使用反單引號(` `)來代替 repr(), 把 string 的值用引號擴起來, 而不僅顯示 string 的值

# queue.pop(0) 總是將在佇列中最前面的元素彈出

defviewq

():# 定義乙個顯示佇列中的內容的方法

print queue

cmds =

# 定義乙個 dict 型別物件, 將字元對映到相應的 function .可以通過輸入字元來執行相應的操作

defshowmenu

():# 定義乙個操作選單提示方法

pr = """

(e)nqueue

(d)equeue

(v)iew

(q)uit

enter choice: """

while

true:

while

true:

try:

choice = raw_input(pr).strip()[0].lower()

# str.strip() 去除 string 物件前後的多餘空格

# str.lower() 將多有輸入轉化為小寫, 便於後期的統一判斷

# 輸入 ^d(eof, 產生乙個 eoferror 異常)

# 輸入 ^c(中斷退出, 產生乙個 keyboardinterrupt 異常)

except (eoferror, keyboardinterrupt, indexerror):

choice = 'q'

print

'\nyou picked: [%s]' % choice

if choice not

in'uovq':

print

'invalid option, try again'

else:

break

if choice == 'q':

break

cmds[choice]()

# 獲取 dict 中字元對應的 functionname, 實現函式呼叫

if __name__ == '__main__':

showmenu()

佇列和堆疊的實現方式很相似, 區別在於佇列總是先彈出第乙個元素而堆疊總是先彈出最後乙個元素.

python資料結構 佇列

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

資料結構 python 佇列

佇列 queue 是一種特殊的線性表,特殊之處在於它只允許在表的前端 front 進行刪除操作,而在表的後端 rear 進行插入操作,和棧一樣,佇列是一種操作受限制的線性表。進行插入操作的端稱為隊尾,進行刪除操作的端稱為隊頭。佇列符合先進先出 fifo 的原則。複雜度分析 佇列屬於常見的一種線性結構...

Python資料結構 佇列

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