这是数据结构与算法关于栈的一个代码实操题目:
```c++
Status Matching() {
SqStack S; //设置一个栈
InitStack(S); //初始化栈的操作
int flag = 1;
char ch; cin >> ch;
while (ch != '#' && flag) { //假设表达式以“#”结束
switch (ch) {
case '(':
Push(S,ch); //入栈
break;
case '[':
Push(S, ch); //入栈
break;
case ')':
if (!StackEmpty(S) && GetTop(S) == '(') {
SElemType x1; //typedef char SElemType;
Pop(S, x1); //出栈
}
else flag = 0;
break;
case ']':
if (!StackEmpty(S) && GetTop(S) == '[') {
SElemType x2; //typedef char SElemType;
Pop(S, x2); //出栈
}
else flag = 0;
break;
}
cin >> ch;
}
if (StackEmpty(S) && flag)return true;
else return false;
}
但是如果我把第一个case和第二个case用||合并:
Status Matching() {
SqStack S; //设置一个栈
InitStack(S); //初始化栈的操作
int flag = 1;
char ch; cin >> ch;
while (ch != '#' && flag) { //假设表达式以“#”结束
switch (ch) {
case '('||']':
Push(S,ch); //入栈
break;
case ')':
if (!StackEmpty(S) && GetTop(S) == '(') {
SElemType x1; //typedef char SElemType;
Pop(S, x1); //出栈
}
else flag = 0;
break;
case ']':
if (!StackEmpty(S) && GetTop(S) == '[') {
SElemType x2; //typedef char SElemType;
Pop(S, x2); //出栈
}
else flag = 0;
break;
}
cin >> ch;
}
if (StackEmpty(S) && flag)return true;
else return false;
}
他就没办法达到我想要的效果,他会提前退出程序,望解答,谢谢!