阿漩 2022-07-30 20:12 采纳率: 100%
浏览 22
已结题

数据结构与算法中利用栈解决关于括号匹配检验的问题

这是数据结构与算法关于栈的一个代码实操题目:

img


```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;
}
他就没办法达到我想要的效果,他会提前退出程序,望解答,谢谢!
  • 写回答

1条回答

      报告相同问题?

      相关推荐 更多相似问题

      问题事件

      • 系统已结题 8月7日
      • 已采纳回答 7月30日
      • 创建了问题 7月30日

      悬赏问题

      • ¥15 Linux gcc升级问题
      • ¥100 如何封禁域名,让app打不开呢?
      • ¥15 帮忙改错(写一下)谢谢,c++基础题,递归数列画三角形。
      • ¥15 通过安卓命令如何打开控制中心
      • ¥15 Nginx 配合Django 丢样式
      • ¥15 求问Python学生成绩管理系统的问题
      • ¥15 求🐏了个🐏第二关的代码,c语言
      • ¥20 类似羊了个羊修改三个不同图片才能消除
      • ¥15 环绕字符串的子字符串个数(实在做不出来,只能做到普通字符串)
      • ¥20 B站评论区 点击这个蓝字就打开一张图片 是怎么做的