堆栈错误???

nandizhu 2008-01-22 09:33:50
//adt.h

#define stack_init_size 100;
#define stack_increment 10;

typedef struct
{
char *base;
char *top;
int stacksize;
}sqstack;

//stack.cpp
#include<iostream>
#include"ADT.H"

int initstack(sqstack &s)
{
s.base=(char*)malloc(stack_init_size*sizeof(char));
if(!s.base) return 0;
s.top=s.base;
s.stacksize=stack_init_size;
return 1;
}

int gettop(sqstack s,char &e)
{
if(s.top==s.base)
return 0;
else
e=*(s.top-1);
return 1;
}

int push(sqstack &s,char e)
{
if(s.top-s.base>=s.stacksize)
{
s.base=(char*)realloc(s.base,(s.stacksize+stack_increment)*sizeof(char));

if(!s.base)
return 0;
s.top=s.base+s.stacksize;
s.stacksize+=stack_increment;
}
*s.top++=e;
return 1;
}

int pop(sqstack &s,char &e)
{
if(s.top==s.base)
return 0;
e=*--s.top;
return 1;
}

int stackempty(sqstack s)
{
if(s.top==s.base)
return 1;
else
return 0;
}
//main.cpp
#include<iostream>
#include"ADT.H"
extern int initstack(sqstack &s);
extern int gettop(sqstack s,char &e);
extern int push(sqstack &s,char e);
extern int pop(sqstack &s,char &e);
extern int stackempty(sqstack s);
using namespace std;
int main()
{
char e;
sqstack s;
initstack(s);
int n,m;
cin>>n;
cin>>m;
while(n)
{
int k=0;
if(n%m>=10)
k=(n%m-10)+97;
else
k=n%m+48;
push(s,char(k));
n=n/m;
}
while(!stackempty(s))
{
pop(s,e);
printf("%c",e);
}
return 0;
}
写的是关于进制转换的代码
调试后
stack.cpp(6) : error C2143: syntax error : missing ')' before ';'
stack.cpp(6) : error C2059: syntax error : ')'
stack.cpp(6) : error C2100: illegal indirection
stack.cpp(26) : error C2143: syntax error : missing ')' before ';'
stack.cpp(26) : error C2143: syntax error : missing ')' before ';'
stack.cpp(26) : error C2059: syntax error : ')'
stack.cpp(26) : error C2059: syntax error : ')'
stack.cpp(26) : error C2100: illegal indirection
...全文
87 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
vincent_1011 2008-01-22
  • 打赏
  • 举报
回复
是那里错误,哈哈,看到2楼的,想起为什么了,

因为加多分号,就把分号下宏进去了。。。
vincent_1011 2008-01-22
  • 打赏
  • 举报
回复
把define语句后面的分号去掉试试

有时候就是因为这样才出错。。我朋友遇到过

不过按道理,后面的分号应该不影响,因为可以当做是空语句,(也许是因为放的位置不对)

知道原因的朋友答下我
nandizhu 2008-01-22
  • 打赏
  • 举报
回复
s.base=(char*)malloc(stack_init_size*sizeof(char));
s.base=(char*)realloc(s.base,(s.stacksize+stack_increment)*sizeof(char));

提示这两行有错,但是我没看出来啊..
sakaer 2008-01-22
  • 打赏
  • 举报
回复
楼主,你确信你是“调试”过后的出的错误吗?
应该是没通过编译吧?全是语法错误。
编译器已经告诉你了错误在哪里,自己看一下,能够改正的。
相信你自己能够解决这类问题,也应该是你自己解决这类问题。

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧