棧:一種有次序的資料項集合,在棧中,資料項的加入和移除
都僅發生在同一端,距離棧底越近的資料項,留在棧中的時間
就越長。這種次序通常稱為「後進先出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
# 當右括號抵消後還有左括號時,說明左括號多。
(parchecker(
'((()))'))
(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 又名堆疊,它是一種運算受限的線性表。其限制是僅允許在表的一端進行插入和刪除運算。這一端被稱為棧頂,相對地,把另一端稱為棧底。向乙個棧插入新元素又稱作進棧 入棧或壓棧,它是把新元素放到棧頂元素的上面,使之成為新的棧頂元素 從乙個棧刪除元素又稱作出棧或退棧,它是把棧頂元素刪除掉,使...