用C++設(shè)計(jì)一個(gè)算法,判別一個(gè)算術(shù)表達(dá)式的圓括號是否配對正確。
qq_宸子_04228031
2017-04-13 13:28:00
TA貢獻(xiàn)143條經(jīng)驗(yàn) 獲得超187個(gè)贊
#include?"stdio.h" void?BracketMatch(char?*str)?/*?str[]中為輸入的字符串,利用堆棧技術(shù)來檢查該字符串中的括號是否匹配*/ { ????SeqStack?S;? ????int?i;? ????char?ch; ????? ????InitStack(&S); ????? ????for(i=0;?str[i]!='\0';?i++)???/*對字符串中的字符逐一掃描*/ ????{ ????????switch(str[i]) ????????{ ????????case?'(': ????????case?'[': ????????case?'{': ????????????Push(&S,str[i]);?? ????????????break; ??????????case?')': ??????????case?']': ??????????case?'}': ????????????if(IsEmpty(&S)) ????????????{? ????????????????printf("\n右括號多余!");?? ????????????????return; ????????????} ????????????else ????????????{ ????????????????GetTop(&S,&ch); ????????????????if(Match(ch,str[i]))??/*用Match判斷兩個(gè)括號是否匹配*/ ????????????????????Pop(&S,&ch);??????/*已匹配的左括號出棧*/ ????????????????else ????????????????{ ????????????????????printf("\n對應(yīng)的左右括號不同類!");?? ????????????????????return; ????????????????} ????????????} ????????}/*switch*/ ????}/*for*/ ????if(IsEmpty(&S)) ????????printf("\n括號匹配!"); ????else ????????printf("\n左括號多余!"); } ? void?main() { ????char?str[100]; ????printf("please?input:"); ????gets(str); ????BracketMatch(str); }
舉報(bào)