数据结构(严蔚敏)顺序栈_括号匹配的检验

  • Post author:
  • Post category:其他




代码如下:



注意:



1、把此段代码添加到“数据结构(严蔚敏)顺序栈” 就可以了



2、把“数据结构(严蔚敏)顺序栈”的定义


SElemType


改成下面的



typedef char SElemType就可以了

void check()

{ /* 对于输入的任意一个字符串,检验括号是否配对 */

SqStack s;

SElemType ch[80],*p,e;

if(InitStack(&s)) /* 初始化栈成功 */

{


printf(“请输入表达式/n”);

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不配对 */

{


printf(“左右括号不配对/n”);

exit(ERROR);

}

else

{


p++;

break; /* 跳出switch语句 */

}

}

else /* 栈空 */

{


printf(“缺乏左括号/n”);

exit(ERROR);

}

default: p++; /* 其它字符不处理,指针向后移 */

}

if(StackEmpty(s)) /* 字符串结束时栈空 */

printf(“括号匹配/n”);

else

printf(“缺乏右括号/n”);

}

}



版权声明:本文为lijuwen原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。