日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

括号的匹配(表达式的合法性检查)

發(fā)布時(shí)間:2024/4/30 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 括号的匹配(表达式的合法性检查) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

【問(wèn)題描述】

假設(shè)一個(gè)表達(dá)式由英文字母(小寫(xiě))、運(yùn)算符(+、-、*、/)和左右小(圓)括號(hào)構(gòu)成,以“@”作為表達(dá)式的結(jié)束符。
請(qǐng)編寫(xiě)一個(gè)程序檢查表達(dá)式中的左右圓括號(hào)是否匹配,若匹配,則返回“YES”;否則返回“NO”。
假設(shè)表達(dá)式長(zhǎng)度小于255,左圓括號(hào)少于20個(gè)。

【算法分析】

假設(shè)輸入的字符串存儲(chǔ)在c中(char c[256])。
可以定義一個(gè)棧:char s[maxn+1];int top;
用它來(lái)存放表達(dá)式中從左往右的左圓括號(hào)(maxn=20)。

【算法思路】

順序(從左往右)掃描表達(dá)式的每個(gè)字符c[i],若是“( ”,則讓它進(jìn)棧;若遇到的是“)”,則讓棧頂元素出棧;
當(dāng)棧發(fā)生下溢或當(dāng)表達(dá)式處理完畢而棧非空時(shí),都表示不匹配,返回“NO”;否則表示匹配,返回“YES”。

【代碼分析】

#include <cstdio> #include <cstdlib> #define maxn 20 using namespace std; char c[256]; bool judge(char c[256]) {int top=0,i=0;while(c[i]!='@'){if(c[i]=='(') top++;if(c[i]==')'){if(top>0) top--;else return false;}i++;}if(top!=0) return false;//檢查棧是否為空,不空則說(shuō)明有未匹配的括號(hào)。else return true; } int main () {scanf("%s",c);if(judge(c)) printf("YES");else printf("NO");return 0; }

總結(jié)

以上是生活随笔為你收集整理的括号的匹配(表达式的合法性检查)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。