#include <stdio.h>
#include <stdlib.h>
#define stacklen 100
typedef char elemtype;
typedef struct
{
elemtype *base;
elemtype *top;
int stacksize;
}sqstack;
int initstack(sqstack *s)
{
s->base=(elemtype *)malloc(stacklen*sizeof(elemtype));
if(!s->base) exit(0);
s->top=s->base;
s->stacksize=stacklen;
return 1;
}
//插入e为栈顶元素
int push(sqstack *s,elemtype e)
{
*(s->top)=e;
s->top++;
return 1;
}
//删除栈顶元素,并用e返回删除的值
int pop(sqstack *s,elemtype *e)
{
if(s->top==s->base)return -1;
s->top--;
*e=*(s->top);
return 1;
}
int main(int argc, char *argv[])
{
char a;
char c;
sqstack s;
initstack(&s);
while((c=getchar())!='\n')
{
if(c=='('||c=='[')
push(&s,c);
else if(c==')')
{
pop(&s,&a);
if(c-a==1)
continue;
else break;
}
else if(c==']')
{
pop(&s,&a);
if(c-a==2)
continue;
else break;
}
}
//printf("%x\n",s.base);
//printf("%x\n",s.top);
if(s.top==s.base)
printf("this is correct!\n");
else printf("this is wrong!\n");
system("PAUSE");
return 0;
}