第6周專案3 括號的匹配
阿新 • • 發佈:2019-02-06
問題描述:
/*
Copyright (c)2015,煙臺大學計算機與控制工程學院
All rights reserved.
檔名稱:專案3.cbp
作 者:張芸嘉
完成日期:2015年10月23日
版 本 號:v1.0
問題描述:假設表示式中允許三種括號:圓括號、方括號和大括號。編寫一個演算法,判斷表示式中的各種左括號是否與右括號匹配。
例如,輸入2+(3+4)*[2+{[3]}]-8,輸出匹配正確;輸入2+(3+4*[2)+{[3]}-8,輸出匹配錯誤。
輸入描述:輸入表示式
程式輸出:輸出判斷結果
*/
程式碼:
main函式程式碼
#include "sqstack.h" bool isMatch(char *st) { int d=1, i; char c; SqStack *s; InitStack(s); for(i=0; st[i]!='\0'&&d; i++) { switch(st[i]) { case'(': case'[': case'{': Push(s, st[i]); break; case')': Pop(s, c); if(c!='(') d=0; break; case']': Pop(s, c); if(c!='[') d=0; break; case'}': Pop(s,c); if(c!='{') d=0; break; } } if(StackEmpty(s)&&d==1) return true; else return false; } int main() { char st[50]; printf("請輸入表示式:"); scanf("%s", st); if(isMatch(st)) printf("配對正確!!\n"); else printf("配對錯誤!!\n"); return 0; }
執行結果:
輸入2+(3+4)*[2+{[3]}]-8時、
輸入2+(3+4*[2)+{[3]}-8時
知識點總結:
利用棧解決具體應用問題。