佇列(python實現)

2021-09-19 09:22:17 字數 3412 閱讀 4488

# adt queue:

# queue(self) #建立空佇列

# is_empty(self) #判斷佇列是否為空

# enqueue(self, elem) #入隊

# dequeue(self) #出隊

# peek(self) #檢視最早入隊的元素,不刪除

class

queueunderflow

(valueerror)

:# (空佇列訪問)

pass

class

lnode

:def

__init__

(self, elem, next_=

none):

self.elem = elem

self.

next

= next_

class

lqueue()

:def

__init__

(self)

: self._rear =

none

self._head =

none

defis_empty

(self)

:return self._head is

none

defenqueue

(self,elem)

:if self._head is

none

: self._head = lnode(elem, self._head)

self._rear = self._head

else

: self._rear.

next

= lnode(elem)

self._rear = self._rear.

next

defdequeue

(self)

:if self._head is

none

:raise queueunderflow(

'in dequeue'

) e = self._head.elem

self._head = self._head.

next

return e

defpeek

(self)

:if self._head is

none

:raise queueunderflow(

"in peek"

)return self._head.elem

queue1 = lqueue(

)queue1.enqueue(3)

queue1.enqueue(5)

queue1.enqueue(7)

while

not queue1.is_empty():

print

(queue1.dequeue(

))

輸出結果:

ps e:\vscode\datastructure> python .\queue.py35

7

###################### 

'''佇列的順序表實現'''

######################

class

squeue

:def

__init__

(self, init_len=8)

: self._len = init_len # 儲存區長度

self._elems =[0

]*init_len # 元素儲存

self._head =

0# 表頭元素下標

self._num =

0# 元素個數

defis_empty

(self)

:return self._num ==

0def

peek

(self)

:if self._num ==0:

raise queueunderflow

return self._elems[self._head]

defenqueue

(self,elem)

:if self._num == self._len:

# 判斷隊滿

self._extend(

) self._elems[

(self._head+self._num)

% self._len ]

= elem

self._num +=

1def

dequeue

(self)

:if self._num ==0:

raise queueunderflow

elem = self._elems[self._head]

self._head =

(self._head+1)

% self._len

self._num -=

1return elem

def_extend

(self)

: old_len = self._len

self._len *=

2 new_elems =[0

]*self._len

for i in

range

(old_len)

: new_elems[i]

= self._elems[

(self._head+i)

% old_len ]

self._elems, self._head = new_elems,

0queue2 = squeue(

)for i in

range(12

):queue2.enqueue(i)

print

("最先入隊的元素是:"

,queue2.peek())

for i in

range(12

):print

(queue2.dequeue(

), end=

", "

)

輸出結果:

ps e:\vscode\datastructure> python .\queue.py

最先入隊的元素是: 00,

1,2,

3,4,

5,6,

7,8,

9,10,

11,

python 清空佇列 python實現 佇列

佇列 佇列的乙個特性是 先進先出 first in first out,fifo python中,同樣可以使用列表來儲存佇列的資料。通過建立乙個佇列類,便可以方便的對佇列進行操作。主要有 入隊 in 出隊 out 清空佇列 empty 設定佇列大小 setsize 獲取隊尾位置 getend 等 p...

Python實現佇列

佇列 是一種特殊的線性表,特殊之處在於它只允許在表的前端 front 進行刪除操作,而在表的後端 rear 進行插入操作,和棧一樣,佇列是一種操作受限制的線性表。進行插入操作的端稱為隊尾,進行刪除操作的端稱為隊頭。特點 先進先出。class queue object def init self se...

python實現佇列

佇列 queue 和棧一樣,也是一種操作受限的線性表,但它只允許在表的一端進行插入,在另一端進行刪除。操作特徵是先進先出 fifi,first in first out 隊頭 front 允許刪除的一端,又稱為隊首 隊尾 rear 允許刪除的一端 空佇列 不含有任何元素的空表 佇列常見操作 iniq...