kuohao.cpp

来自「数据结构中顺序栈的表示与实现」· C++ 代码 · 共 49 行

CPP
49
字号
 //括号匹配的检验,(限于()、[])
 typedef char SElemType;
 #include"c1.h"
 #include"c3-1.h"
 #include"bo3-1.cpp"
 main()
 {
  // 对于输入的任意一个字符串,检验括号是否配对
   SqStack s;
   SElemType ch[80],*p,e;
   InitStack(s);
   cout<<"请输入表达式:";
   gets(ch);
   p=ch;
   while(*p) // 没到串尾
     switch(*p)
     {
       case '(':
       case '[':Push(s,*p++);
                break; // 左括号入栈,且p++
       case ')':
       case ']':if(!StackEmpty(s)) // 栈不空
                {
                  Pop(s,e); // 弹出栈顶元素
                  if(*p==')'&&e!='('||*p==']'&&e!='[') // 弹出的栈顶元素与*p不配对
                  {
                    cout<<"左右括号不配对"<<endl;
                    exit(ERROR);
                  }
                  else
                  {
                    p++;
                    break; // 配对,跳出switch语句,继续处理
                  }
                }
                else // 栈空
                {
                  cout<<"缺乏左括号"<<endl;
                  exit(ERROR);
                }
         default: p++; // 其它字符不处理,指针向后移
       }
     if(StackEmpty(s)) // 字符串结束时栈空
       cout<<"括号匹配"<<endl;
     else
       cout<<"缺乏右括号"<<endl;
 }

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?