一个程序问题。。帮帮忙 看看怎么修改。分不多,但真心谢谢

来源:百度知道 编辑:UC知道 时间:2024/06/23 20:06:15
#include<iostream.h>
#include<string.h>
#define MaxSize 100
typedef char Elemtype;
typedef struct{
Elemtype data[MaxSize];
int top;
}stack;
void InitStack(stack *s)
{s->top==-1;}
int Push(stack *s,Elemtype x)
{
if(s->top==MaxSize){
cout<<"上溢";
return 0;
}
s->top++;
s->data[s->top]=x;
return 1;
}
int Empty(stack *s)
{
return(s->top==-1?1:0);
}
int Pop(stack *s,Elemtype *x)
{
if(Empty(s)){
cout<<"下溢";
return 0;
}
*x=s->data[s->top];
s->top--;
return 1;
}
int match(char *exps)
{
stack st;
int pos=0;int yesmatch=1;
Elemtype ch;
while(exps[pos]&&yesmatch){
switch(exps[pos]){
case'(':
case'[':
case'{':Push(&st,exps[pos]);break;
case')':

好多年不编了,忘了好多,一些细微的语法错误可能就看不出来了。不过有两个地方我觉得有些不对

int Push(stack *s,Elemtype x)
{
if(s->top==MaxSize-1){
cout<<"上溢";
return 0;
}
data[s->top]中s->top的值应该是0到MaxSize-1,当它等于MaxSize的时候data就已经溢出了。

还有,match(char *exps)里面st没有初始化吧。这样是不行的。