基本資料結構之括號匹配 基於棧的實現

2022-07-20 03:54:11 字數 1024 閱讀 4573

from stack import stack

def parchecker1(symbolstring):

"""# 1. 建立乙個空棧,預設標記為匹配成功

# 2. 從左到右依次取括號

# 3. 如果是"(",加入棧頂,如果是")",看棧是否為空,為空則匹配失敗,否則pop棧頂

# 4. 最後檢查棧是否為空以及標記符號是否為true,為空則匹配成功,反之失敗

:param symbolstring:

:return:

"""s = stack()

balanced = true

index = 0

while index < len(symbolstring) and balanced:

if symbolstring[index] == "(":

s.push("(")

else:

if s.isempty():

balanced = false

else:

s.pop()

index += 1

if balanced and s.isempty():

balanced = true

else:

balanced = false

return balanced

print(parchecker1(""))

def parchecker(symbolstring):

s = stack()

balanced = true

index = 0

while index < len(symbolstring) and balanced:

if symbolstring[index] in "(["

return opens.index(open) == closers.index(close)

print(parchecker("()}"))

print(parchecker("["))

基本資料結構 棧

基本資料結構 棧 一.線性資料結構 我們從四個簡單但重要的概念開始研究資料結構。棧,佇列,deques 雙向佇列 列表是一類資料的容器,它們資料元素之間的順序由新增或刪除的順序決定。一旦乙個資料元素被新增,它相對於前後元素一直保持該位置不變。諸如此類的資料結構被稱為線性資料結構。線性資料結構有兩端,...

基本資料結構 棧

我們從四個簡單但重要的概念開始研究資料結構。棧,佇列,deques 雙向佇列 列表是一類資料的容器,它們資料元素之間的順序由新增或刪除的順序決定。一旦乙個資料元素被新增,它相對於前後元素一直保持該位置不變。諸如此類的資料結構被稱為線性資料結構。線性資料結構有兩端,有時被稱為左右,某些情況被稱為前後。...

基本資料結構 棧

棧的特徵是後進先出 last in,first out,lifo 棧上的插入操作稱為壓入 push 刪除操作稱為彈出 pop 下面使用乙個陣列s n 來實現乙個最多容納n個元素的棧。定義乙個屬性指向最新插入的元素。棧的操作 如下 public class stack public stack int...