回 帖 发 新 帖 刷新版面

主题:括号匹配问题``程序调试不出来请高手指点

总提示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");
}

回复列表 (共5个回复)

沙发

你是是用c++编译一下,可以的。
好象c不支持引用吧

板凳

C++不会呢``我该怎么改呀

3 楼

1。方法1:
把凡是引用的地方改成指针

2。方法2:
换编译器,有那么多更好的编译器,为什么要死抱着tc呢?

4 楼

这个参数引用方法你肯定是在数构的树上看到的,这个是c++的引用方法,你只要在c++的编译器里编译就可以了,或者换为指针的引用方式~~

5 楼

还是不知道怎么改``没改对呀,能明确的给我讲讲么?

我来回复

您尚未登录,请登录后再回复。点此登录或注册