棧的應用 1 通用括號匹配演算法python實現

2021-10-05 11:21:01 字數 2166 閱讀 6735

計算過程中可能包含大量的的括號,而且這些括號有優先順序,因此在演算法中需要檢驗括號是否平衡,正確的對括號進行匹配,是很多語言編譯器的基礎演算法。

正確匹配形式:

(){} ({}) 等

錯誤匹配形式:

( [ )] ) 等

匹配過程:

(1)從左到右掃瞄括號串,最近開啟的左括號,應該匹配最先遇到的右括號;

(2)第乙個開啟的左括號(最早開啟),就應該匹配最後乙個右括號(最後遇到);——次序翻轉,正好符合的特性。

執行流程圖:

1.1定義棧及各種屬性

class

stack

(object):

#定義棧 類

"""棧"""

def__init__

(self)

: self.items =

defis_empty

(self)

:"""判斷是否為空"""

return self.items ==

defpush

(self, item)

:"""加入元素"""

defpop

(self)

:"""彈出元素"""

return self.items.pop(

)def

peek

(self)

:"""返回棧頂元素"""

return self.items[

len(self.items)-1

]def

size

(self)

:"""返回棧的大小"""

return

len(self.items)

1.2 定義括號匹配過程

def

parcheck

(symbolstring)

:#定義檢查括號

s=stack(

) balanced=

true

index=

0while index <

len(symbolstring)

and balanced:

symbol=symbolstring[index]

if symbol ==

"(":

##定義字串中括號型別

s.push(symbol)

else

:if s.is_empty():

balanced=

false

else

: top=s.pop()if

not matches(top,symbol)

: balanced=

false

index=index+

1if balanced and s.is_empty():

return

true

else

:return

false

defmatches

(open

,close)

: opens=

"(["

return opens.index(

open

)==closers.index(close)

1.3 例項驗證

print

(parcheck(

'()'))

print

(parcheck())

print

(parcheck(

))print

(parcheck(((

))))

###輸出結果

true

true

true

true

htmi/xml文件也有類似於括號的開閉標記,註冊層級結構化的校驗、操作也可通過棧來實現。

用棧實現括號匹配的演算法

要求 用棧的基本操作實現括號匹配演算法,要求至少包括兩種型別的括號。下面的 是我的一些思路,並不算最優的,大家學習就好啦 include include define max 5 初始建立棧的容量 define add 5 棧滿時新增的容量 typedef char elemtype typedef...

棧的應用(括號匹配演算法實戰)

1.實驗目的 棧 stack 是線性結構的核心內容之一。本實驗要求用高階語言c語言編寫基於棧的順序儲存結構實現棧的入棧 出棧 取棧頂元素和判空操作,並基於上述棧的基本操作實現括號匹配演算法,完成實驗報告的填寫,以便加深理解有關棧結構的抽象資料型別等概念,並體會和了解棧結構在日常使用者輸入操作中的應用...

棧的應用 括號匹配

3.1棧的應用 括號匹配 一 實驗目的1 掌握堆疊特殊線性表的儲存方式的基本操作方法。2 掌握堆疊後進先出運算原則在解決實際問題中的應用。3 掌握使用棧的原理來解決表示式中的括號配對問題。二 實驗內容 假設乙個算術表示式中包含圓括弧 方括弧三種型別的括弧,編寫乙個程式用於判別表示式中括弧是否正確配對...