用C++設計一個算法,判別一個算術表達式的圓括號是否配對正確。
qq_宸子_04228031
2017-04-13 13:28:00
TA貢獻143條經驗 獲得超187個贊
#include?"stdio.h" void?BracketMatch(char?*str)?/*?str[]中為輸入的字符串,利用堆棧技術來檢查該字符串中的括號是否匹配*/ { ????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判斷兩個括號是否匹配*/ ????????????????????Pop(&S,&ch);??????/*已匹配的左括號出棧*/ ????????????????else ????????????????{ ????????????????????printf("\n對應的左右括號不同類!");?? ????????????????????return; ????????????????} ????????????} ????????}/*switch*/ ????}/*for*/ ????if(IsEmpty(&S)) ????????printf("\n括號匹配!"); ????else ????????printf("\n左括號多余!"); } ? void?main() { ????char?str[100]; ????printf("please?input:"); ????gets(str); ????BracketMatch(str); }
舉報