主题:括号匹配问题``程序调试不出来请高手指点
总提示Status InitStack(SqStack &s) 这句语法错误
可是我实在看出来错在哪了 请高手指点
我在WIN-TC下调试的
#include <stdio.h>
#include <malloc.h>
#define OK 1
#define ERROR 0
typedef int Status;
#define STACK_INIT_SIZE 100
#define STACKINCREMENT 10
typedef struct
{int *base;
int *top;
int stacksize;
}SqStack;
Status InitStack(SqStack &s)
{
s.base=(int *)malloc(STACK_INIT_SIZE*sizeof(int));
if(!s.base) return ERROR;
s.top=s.base;
s.stacksize=STACK_INIT_SIZE;
return OK;
}
Status push(SqStack &s,char e)
{
if(s.top-s.base>=s.stacksize)
{s.base=(int *)realloc(s.base,(s.stacksize+STACKINCREMENT)*sizeof(int));
if(!s.base) return ERROR;
s.top=s.base+s.stacksize;
s.stacksize+=STACKINCREMENT;
}
*s.top++=e;
return OK;
}
Status pop(SqStack &s,char &e)
{
if(s.base==s.top) return ERROR;
e=*--s.top;
return OK;
}
Status StackEmpty(SqStack s)
{if(s.base==s.top) return 1;
else return 0;
}
main()
{char ch1,ch2,c[100];int i;
SqStack s;
InitStack(s);
printf("请输入包括括号表达式:");
scanf("%s",c);
i=0;
while(ch1=c[ii++])
{if(ch1=='('||ch1=='{'||ch1=='[')
push(s,ch1);
else if(ch1==')' ||ch1==']' ||ch1=='}')
if(StackEmpty(s)) {printf("表达式中的括号不匹配!\n");return ERROR;}
else {pop(s,ch2);
if(ch2=='(' && ch1!=')') {printf("表达式中的括号不匹配!\n");return ERROR;}
if(ch2=='[' && ch1!=']') {printf("表达式中的括号不匹配!\n");return ERROR;}
if(ch2=='{' && ch1!='}') {printf("表达式中的括号不匹配!\n");return ERROR;}
}
}
if(!StackEmpty(s)) {printf("表达式中的括号不匹配!\n"); return ERROR;}
printf("表达式中的括号匹配!");
printf("\n");
}
可是我实在看出来错在哪了 请高手指点
我在WIN-TC下调试的
#include <stdio.h>
#include <malloc.h>
#define OK 1
#define ERROR 0
typedef int Status;
#define STACK_INIT_SIZE 100
#define STACKINCREMENT 10
typedef struct
{int *base;
int *top;
int stacksize;
}SqStack;
Status InitStack(SqStack &s)
{
s.base=(int *)malloc(STACK_INIT_SIZE*sizeof(int));
if(!s.base) return ERROR;
s.top=s.base;
s.stacksize=STACK_INIT_SIZE;
return OK;
}
Status push(SqStack &s,char e)
{
if(s.top-s.base>=s.stacksize)
{s.base=(int *)realloc(s.base,(s.stacksize+STACKINCREMENT)*sizeof(int));
if(!s.base) return ERROR;
s.top=s.base+s.stacksize;
s.stacksize+=STACKINCREMENT;
}
*s.top++=e;
return OK;
}
Status pop(SqStack &s,char &e)
{
if(s.base==s.top) return ERROR;
e=*--s.top;
return OK;
}
Status StackEmpty(SqStack s)
{if(s.base==s.top) return 1;
else return 0;
}
main()
{char ch1,ch2,c[100];int i;
SqStack s;
InitStack(s);
printf("请输入包括括号表达式:");
scanf("%s",c);
i=0;
while(ch1=c[ii++])
{if(ch1=='('||ch1=='{'||ch1=='[')
push(s,ch1);
else if(ch1==')' ||ch1==']' ||ch1=='}')
if(StackEmpty(s)) {printf("表达式中的括号不匹配!\n");return ERROR;}
else {pop(s,ch2);
if(ch2=='(' && ch1!=')') {printf("表达式中的括号不匹配!\n");return ERROR;}
if(ch2=='[' && ch1!=']') {printf("表达式中的括号不匹配!\n");return ERROR;}
if(ch2=='{' && ch1!='}') {printf("表达式中的括号不匹配!\n");return ERROR;}
}
}
if(!StackEmpty(s)) {printf("表达式中的括号不匹配!\n"); return ERROR;}
printf("表达式中的括号匹配!");
printf("\n");
}