是数据结构的一个问题
#include<stdio.h>
#include<stdlib.h>
#define STACK_INIT_SIZE 100
#define STACK_INCREMENT 10
typedef struct
{
char *top;
char *base;
int SIZE;
}SqStack;
void Initstack(SqStack S)
{
S->base=(char)malloc(STACK_INIT_SIZE*sizeof(char));
S->top=S->base;
S->SIZE=STACK_INIT_SIZE;
}
void Push(SqStack *S, char c)
{
if(S->top-S->base>=S->SIZE)
{
S->base=(char *)realloc(S->base,(S->SIZE+STACK_INCREMENT)*sizeof(char));
S->top=S->base+S->SIZE;
S->SIZE+=STACK_INCREMENT;
}
*S->top=c;
S->top=S->top+1;
}
void Pop(SqStack *S)
{
if(S->top!=S->base)
S->top--;
}
int main()
{
SqStack S;
Initstack(S);
char c;int i=1;
while(c=(getchar())!='\n')
{
if(c=='('||c=='[')
Push(S,c);
else if(c==')'||c==']')
{
if(c==')')
c='(';
else
c='[';
if(c==(S->top-1))
Pop(S);
else
{i=0;break;}
}
}
if(S->top==S->base&&i==1)printf("Match succeed!\n");
else printf("Match false!\n");
return 0;
}