# 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...