資料結構與演算法 棧及利用棧實現簡單括號匹配

2021-10-09 11:05:44 字數 1664 閱讀 3843

棧:一種有次序的資料項集合,在棧中,資料項的加入和移除

都僅發生在同一端,距離棧底越近的資料項,留在棧中的時間

就越長。這種次序通常稱為「後進先出lifo」:

last in first out

利用棧實現簡單括號匹配

# 遇到左括號則入棧

s.push(symbol)

else

:# 遇到右括號時,棧為空,則說明不匹配。

if s.isempty():

return

false

else

:# 遇到右括號時,抵消棧內的乙個左括號

s.pop(

)if s.isempty():

return

true

else

:return

false

# 當右括號抵消後還有左括號時,說明左括號多。

print

(parchecker(

'((()))'))

print

(parchecker(

'(()'

))括號有{},,(),當三種一起使用時,檢測是否匹配。

from pythonds.basic.stack import stack 

defparchecker

(symbolstring)

: s = stack(

) d1 =',

'[':

']'}

# 用來查詢對應括號

for symbol in symbolstring:

if symbol in d1:

# 任意乙個左括號則入棧

s.push(symbol)

else

:if s.isempty():

# 遇到右括號時,棧為空,則說明不匹配。

return

false

else

:# 保證各種括號是巢狀而不是交叉,如就不行

ifnot

(symbol in

")}]"

and d1[s.pop()]

== symbol)

:return

false

}if s.isempty():

return

true

else

:return

false

print

(parchecker(

'()}'))

print

(parchecker(

'[{()]'

))

資料結構 簡說棧的概念結構及實現

1.1棧的概念及結構 棧 一種特殊的線性表,其只允許在固定的一端進行插入和刪除元素操作。進行資料插入和刪除操作的一端 稱為棧頂,另一端稱為棧底。棧中的資料元素遵守後進先出lifo last in first out 的原則。壓棧 棧的插入操作叫做進棧 壓棧 入棧,入資料在棧頂。出棧 棧的刪除操作叫做...

資料結構與演算法筆記 棧及棧的應用

目錄前言 一 棧的結構 二 基本操作 三 棧的應用 1.棧模擬 1 出棧序列判斷 2 表示式求值 luogu p1175 3 判斷括號是否匹配 luogu p739 2.凸包 凸殼 luogu p5155 3.遞迴 4.單調棧 總結 前言 棧 stack 是一種後進先出 lifo,last in f...

資料結構與演算法《棧》

概念 棧 stack 又名堆疊,它是一種運算受限的線性表。其限制是僅允許在表的一端進行插入和刪除運算。這一端被稱為棧頂,相對地,把另一端稱為棧底。向乙個棧插入新元素又稱作進棧 入棧或壓棧,它是把新元素放到棧頂元素的上面,使之成為新的棧頂元素 從乙個棧刪除元素又稱作出棧或退棧,它是把棧頂元素刪除掉,使...