棧之應用 括號匹配

2021-08-11 02:22:28 字數 1520 閱讀 5447

一、括號匹配的四種可能性:

①左右括號配對次序不正確

②右括號多於左括號

③左括號多於右括號

④左右括號匹配正確

二、測試**

char

a =

"(())abc"

; //

左右括號次序匹配不正確

char

b =

"(()))abc"

; //

右括號多於左括號

char

c =

"(()()abc"

; //

左括號多於右括號

char

d =

"(())abc"

; //

左右括號匹配正確

三、大概思路

1、判單是否是括號

------->不是括號

------------>

跳轉至迴圈控制條件部分

------->是括號

如果是左括號

---->

入棧右括號比較str[i]與棧頂元素(非空)

--------->

匹配------->

出棧------->不匹配------>括號次序有問題

棧頂為空---------->

右括號多

2、比較退出------>棧中為空

-------->

完全匹配

棧中非空-------->

左括號多餘右括號 

四、程式**

#define _crt_secure_no_warnings 1

#include#include#includeusing namespace std;

bool ismatchbrackets(char c)//判斷是否為括號

' || c == '<' || c == '>' || c == '[' || c == ']')

return true;

return false;

}bool matchbrackets(char*pstr)

else//判斷是括號的問題

else//非空

'&&s.top() == '

else//括號不匹配}}

} }if (true ==s.empty())

else }

int main()

"; // 左右括號次序匹配不正確

char b = "(()))abc"; // 右括號多於左括號

char c = "(()()abc"; // 左括號多於右括號

char d = "(())abc"; // 左右括號匹配正確

matchbrackets(a);

matchbrackets(b);

matchbrackets(c);

matchbrackets(d);

system("pause");

return 0;

}

棧應用 括號匹配

假設表示式中允許包含兩種括號 圓括號和方括號。編寫乙個演算法判斷表示式中的括號是否正確配對。由括號構成的字串,包含 如果匹配輸出yes,否則輸出no。複製 yes解決思想 拿到字串後,遍歷字串,當遇到左括號就進棧,右括號棧頂元素出棧,如果括號是匹配的,則最終棧空。include includetyp...

棧的應用 括號匹配

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

棧的應用 括號匹配

description 在實際程式設計中,我們經常會巢狀使用括號,如 如果括號太多,可能會出現括號不匹配的情況,比如 as 等。現希望你們編寫乙個程式,判斷輸入的一段語句中的括號是否匹配。必須使用棧實現這個功能。input 字串s,s是由 以及數字字母組成的字串。output 若括號使用規範且匹配,...