编写一个表达式中括号是否正确配对的算法
来源:学生作业帮助网 编辑:六六作业网 时间:2024/12/31 02:53:40
编写一个表达式中括号是否正确配对的算法
编写一个表达式中括号是否正确配对的算法
编写一个表达式中括号是否正确配对的算法
这是我编的,
#include "stdio.h"
#include "stdlib.h"
#define maxsize 100
typedef struct
{
\x05char*base;
\x05char*top;
\x05int size;
}stack;
void main()
{
\x05char L[maxsize];
\x05char*p;
\x05stack *S;
\x05int a,b,c,a1,b1,c1;
\x05a=b=c=a1=b1=c1=0;
S=(stack*)malloc(sizeof(stack));
S->base=(char*)malloc(maxsize*sizeof(char));
S->size=maxsize;
S->top=S->base;
printf("输入一个表达式存入L中:");
scanf("%s",L);
\x05p=L;
\x05while(*p)
{
\x05switch(*p)
\x05{
\x05\x05case '(' :a++;*S->top++=*p;break;
\x05\x05case ')' :a1++;if(S->top!=S->base&&a1==a){S->top--;a--;break;}
\x05\x05 else printf("配对不正确:\n");exit(0);
\x05\x05case '[' :b++;*S->top++=*p;break;
\x05\x05case ']' :b1++;if(S->top!=S->base&&b1==b){S->top--;b--;break;}
\x05\x05 else printf("配对不正确:\n");exit(0);
\x05\x05case '{' :c++;*S->top++=*p;break;
\x05\x05case '}' :c1++;if(S->top!=S->base&&c1==c){S->top--;c--;break;}
\x05\x05 else printf("配对不正确:\n");exit(0);
\x05\x05default :break;
\x05}
\x05p++;
}
\x05if(S->top==S->base)
\x05printf("配对正确:\n");
\x05else
\x05printf("配对不正确:\n");
}