程序运行出错,求帮助。
#include <stdio.h>#include <stdafx.h>
#include <malloc.h>
#define max 10
typedef char ElemType;
typedef struct
{
ElemType data[max];
int top; //栈顶指针
} SqStack;
void InitStack(SqStack *&s) //初始化栈S
{ s=(SqStack *)malloc(sizeof(SqStack));
s->top=-1; //栈顶指针置为-1
}
void DestroyStack(SqStack *&s) //销毁栈s
{
free(s);
}
bool StackEmpty(SqStack *s) //判断栈空
{
return(s->top==-1);
}
bool Push(SqStack *&s,ElemType e) //进栈
{ if (s->top==max-1) //栈满的情况,即栈上溢出
return false;
s->top++; //栈顶指针增1
s->data[s->top]=e; //元素e放在栈顶指针处
return true;
}
bool Pop(SqStack *&s,ElemType &e) //出栈
{ if (s->top==-1) //栈为空的情况,即栈下溢出
return false;
e=s->data[s->top]; //取栈顶指针元素的元素
s->top--; //栈顶指针减1
return true;
}
bool GetTop(SqStack *s,ElemType &e) //取栈顶元素
{ if (s->top==-1) //栈为空的情况,即栈下溢出
return false;
e=s->data[s->top]; //取栈顶指针元素的元素
return true;
}
void main(){
SqStack *s;
int i;
int j=0;
char b[max];
char e;
int k=true;
InitStack(s);
for(i=0;i<max;i++){
scanf("%c",b[i]);
}
while(j<max&&k){
if(b[j]=='('){
Push(s,b[j]);
}
else if(b[j]==')'){
if(GetTop(s,e)){
if(e!='(')
k=false;
else if(e=='(')
Pop(s,b[j]);
}
}
i++;
}
if(!StackEmpty(s))
printf("不匹配");
else
printf("匹配");
}