利用栈判断表达式中的括弧是否匹配 大神帮忙看看啊 好多错误 心态爆炸了
#include"stdio.h"#define MAXSIZE 1024
typedef struct
{datatype data[MAXSIZE];
int top;
}SeqStack;
SeqStack *Init_SeqStack()
{ SeqStack *s;
s=malloc(sizeof(SeqStack));
s->top= -1;
return s;
int Empty_SeqStack(SeqStack *s)
{ if (s->top== -1) return 1;
else return 0;
}
int Push_SeqStack (SeqStack *s,datatype x)
{ if (s->top==MAXSIZE-1) return 0; /*栈满不能入栈*/
else { s->top++;
s->data[s->top]=x;
return 1;}
}
int Pop_SeqStack(SeqStack *s,datatype *x)
{ if (Empty_SeqStack ( s ) ) return 0; /*栈空不能出栈 */
else { *x=s->data[s->top];
s->top--;
return 1; } /*栈顶元素存入*x,返回*/
}
int Top_SeqStack(SeqStack *s,datatype *x)
{ if ( Empty_SeqStack ( s ) ) return 0; /*栈空*/
else
{
*x=s->data[s->top];
return 1;
}
}
void Destroy_SeqStack(SeqStack *s)
{
if(*s)
{
free(*s);
*s=NULL;
}
}
int correct(char*exp)
{ int i=0;
DataType x;
PSeqStack st;
if((st=createEmptyStack_seq())==NULL)return 0; /*创建空栈*/
do /*依次读入每个字符*/
{x=*(exp+i);
switch(x) /*三种括号单独配对*/
{case'{':case'[':case'(':
push_seq(st,x);
break;
case')';
x=top_seq(st);
if(x!='(')return 0;
pop_seq(st);
break;
case')';
x=top_seq(st);
if(x!='[') return 0;
pop_seq(st);
break;
case'}':
x=top_seq(st);
if(x!='{')return 0;
pop_seq(st);
break;
default:
break;
}
i++;
}while(x!='\0');
return 1;
}