python小知識 佇列和棧

2021-09-26 00:22:14 字數 2053 閱讀 9435

佇列可以做兩端增刪資料元素

佇列中的資料元素遵循'先進先出'的原則,也稱為fifo結構(first in first out)

從空佇列中彈出資料和向滿佇列中壓入資料,均視為錯誤

class

squeue

:# 建立空佇列

def__init__

(self)

: self._elem =

# 判空

defis_empty

(self)

:return self._elem ==

# 判滿 (因使用list無固定大小來實現,故不需要判滿)

# 壓入資料

defpush

(self, data)

:# 從列表頭插入資料

self._elem.insert(

0, data)

# 彈出資料

defpop

(self)

:# 需要判斷佇列是否為空

if self.is_empty():

raise indexerror(

"stack error:試圖從空佇列中彈出資料"

)# 從列表尾移出資料

return self._elem.pop(

)# 自測**

if __name__ ==

"__main__"

:# 建立自己的佇列

myqueue = squeue(

)# 壓入資料 aaa/bbb/ccc/ddd

myqueue.push(

'aaa'

) myqueue.push(

'bbb'

) myqueue.push(

'ccc'

) myqueue.push(

'ddd'

)# 彈出資料

while

not myqueue.is_empty():

print

(myqueue.pop())

# 空佇列中獲取資料

myqueue.pop(

)

棧限制只能在棧頂進行資料插入和刪除操作

棧中資料元素遵循'後進先出'的原則,也稱為filo結構(first in last out)

向滿棧中壓入資料和從空棧中彈出資料,均視為錯誤

class

sstack

:# 構建空棧

def__init__

(self)

: self._elem =

# 判空

defis_empty

(self)

:return self._elem ==

# 判滿 (因使用list無固定大小來實現,故不需要判滿)

# 壓入資料

defpush

(self, elem)

:# 從列表尾部插入資料

# 彈出資料

defpop

(self)

:# 需要判斷棧是否為空

if self.is_empty():

raise indexerror(

"stack error:試圖從空棧中彈出資料"

)# 從列表的尾部彈出資料

return self._elem.pop(

)# 自測**

if __name__ ==

"__main__"

:# 建立自己的棧

mystack = sstack(

)# 壓入資料 10/20/30/40

mystack.push(10)

mystack.push(20)

mystack.push(30)

mystack.push(40)

# 彈出所有資料

while

not mystack.is_empty():

print

(mystack.pop())

# 試圖從空棧中彈出資料

mystack.pop(

)

棧和佇列相關知識

棧和佇列都是線性表 1.棧 只能一頭插入 一頭刪除 2.出入棧規則 先進後出 first in last out filo 後進先出 last in first out lifo 3.存int型別 class stack 4.棧的應用 題目 有效的括號 括號匹配問題 有效匹配 有效匹配 有效匹配 右...

python棧和佇列

類的定義 設計類 類名 屬性 行為 定義乙個女朋友 屬性 身高170,年齡20,性別 女 膚色 白 行為 中的定義 格式 class 類名 父類列表 屬性1屬性2 行為1 方法 行為2乙個類是以class關鍵字開始的 類名需要遵循識別符號命名規則,見名知意 首字母大寫 屬性需要遵循識別符號命名規則,...

python 棧和佇列

棧結構 類似於桶 先進後出 fifo first in last out 棧結構的常用方法 pop 出棧 push 入棧 size 棧大小 isempty 判斷棧是否為空 top 獲取棧頂元素 class stack object def init self self.stack def push ...