虛擬碼:括號匹配
阿新 • • 發佈:2019-01-22
Status BracketMatchStack(char str[],SElemType e) {//str[]為用char型陣列儲存的需檢查字串,匹配檢測通過則e為0,若匹配檢測未通過則e為出錯位置 InitStack(&S);//構造一個空棧S i = 0; while(str[i] != NULL) { //若str[i]為括號則執行對應操作,str[i]為其他字元時直接跳過 if(str[i]=='{'||str[i]=='['||str[i]=='(')//左括號直接入棧 { if(str[i]=='{') mark='}'; if(str[i]=='[') mark=']'; if(str[i]=='(') mark=')'; Push(&S,mark); } if(str[i]=='}'||str[i]==']'||str[i]==')')//右括號與棧頂元素進行匹配檢測 { GetTop(&S,mark); if(str[i]==mark) { Pop(&S,x);//若匹配則將此棧頂元素消除 } else { e=i; return ERROR; } } i++; } e=0; return OK; }