试写一个判别表达式中括号是否配对出现的算法.

来源:学生作业帮助网 编辑:六六作业网 时间:2024/11/24 01:42:13
试写一个判别表达式中括号是否配对出现的算法.试写一个判别表达式中括号是否配对出现的算法.试写一个判别表达式中括号是否配对出现的算法.#include"stdio.h"#include"stdlib.h

试写一个判别表达式中括号是否配对出现的算法.
试写一个判别表达式中括号是否配对出现的算法.

试写一个判别表达式中括号是否配对出现的算法.
#include"stdio.h"
#include"stdlib.h"
typedef struct{
int *base;
int *top;
int stacksize;
}sqstack;
void initstack(sqstack &s){
s.base=(int *)malloc(100*sizeof(int));
s.top=s.base;
s.stacksize=100;
}
void push(sqstack &s,int e){
*s.top=e;
s.top++;
}
pop(sqstack &s){
s.top--;
}
bool stackempty(sqstack &s){
if(s.base==s.top)return 1;
else return 0;
}
void main()
{
char bracket;int i;
sqstack s;
initstack(s);
for(i=0;;i++)
{
scanf("%c",&bracket);
if(bracket=='[')
push(s,1);
if(bracket==']')
push(s,-1);
if(bracket=='(')
push(s,2);
if(bracket==')')
push(s,-2);
if(bracket=='{')
push(s,3);
if(bracket=='{')
push(s,-3);
if((*(s.top-2)>0)&&(s.top>s.base+1)){
if(*(s.top-1)+*(s.top-2)==0){
pop(s);
pop(s);
}}
if(bracket=='\n')
break;}
if(stackempty(s))printf("YES");
else if(!stackempty(s)) printf("NO");
}//黄静雯love