您的位置:首页 > 其它

括号匹配的检验

2013-04-04 10:24 218 查看
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");
}
}



                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  栈的应用 算法