关于创建栈的问题,高手来解答

FredGan 2010-04-23 09:41:39
#include "stdafx.h"
#include "malloc.h"
#include "process.h"
#define STACK_INIT_SIZE 100;
#define STACKINCREMENT 10;
#define OK 1;
#define OVERFLOW 0;
typedef int SElemType;
typedef struct{
int *base;
int *top;
int stacksize;
}SqStack;
typedef int Status;
Status InitStack(SqStack &S);
//create an empty stack
Status DestroyStack(SqStack &S);
//destroy a stack
Status ClearStack(SqStack &S);
//Set S as an empty stack
Status StackEmpty(SqStack &S);
//If S is an empty stack,return True,otherwise return False
int StackLength(SqStack S);
//return the number of elements
Status GetTop(SqStack S,int &e);
//若在栈不空,则用e返回栈顶元素,并返回ok;否则返回false
Status Push(SqStack &S,int e);
//插入元素e为新的栈顶元素
Status Pop(SqStack &S,int & e);
//若栈不空,则删除S的栈顶元素,用e返回其值,并返回OK;否则返回error
Status StackTraverse(SqStack S,Status(*visit)());
//从栈底到栈顶一次对战中每个元素调用函数visit()。一旦visit()失败,则操作失败

//基本算法的算法描述
Status initStack(SqStack &S){
//creat an empty stack
S.base=(int *)malloc(STACK_INIT_SIZE * sizeof(int)); // <-------
if (!S.base) return OVERFLOW;
S.top=S.base;
S.stacksize=STACK_INIT_SIZE;
return OK;
}//InitStack

int main()
{
return 0;
}







vc2008报错,说画箭头有问题,看了半天没看出来是什么问题。请高手解答疑惑。
...全文
129 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
FredGan 2010-04-23
  • 打赏
  • 举报
回复
呵呵,谢谢。
Eric_Wei 2010-04-23
  • 打赏
  • 举报
回复

//#include "stdafx.h"
#include "malloc.h"
#include "process.h"
#define STACK_INIT_SIZE 100//macro不需要分号
#define STACKINCREMENT 10
#define OK 1;
#define OVERFLOW 0;
typedef int SElemType;
typedef struct {
int *base;
int *top;
int stacksize;
} SqStack;
typedef int Status;
Status InitStack(SqStack &S);
//create an empty stack
Status DestroyStack(SqStack &S);
//destroy a stack
Status ClearStack(SqStack &S);
//Set S as an empty stack
Status StackEmpty(SqStack &S);
//If S is an empty stack,return True,otherwise return False
int StackLength(SqStack S);
//return the number of elements
Status GetTop(SqStack S, int &e);
//若在栈不空,则用e返回栈顶元素,并返回ok;否则返回false
Status Push(SqStack &S, int e);
//插入元素e为新的栈顶元素
Status Pop(SqStack &S, int & e);
//若栈不空,则删除S的栈顶元素,用e返回其值,并返回OK;否则返回error
Status StackTraverse(SqStack S, Status(*visit)());
//从栈底到栈顶一次对战中每个元素调用函数visit()。一旦visit()失败,则操作失败

//基本算法的算法描述
Status initStack(SqStack &S) {
//creat an empty stack
//S.base=(int *)malloc(STACK_INIT_SIZE*sizeof(int));
S.base=(int*)malloc(STACK_INIT_SIZE*sizeof(char));
if (!S.base)
return OVERFLOW;
S.top = S.base;
S.stacksize = STACK_INIT_SIZE;
return OK;
}//InitStack

int main() {
return 0;
}

huer0625 2010-04-23
  • 打赏
  • 举报
回复
你好!
我用预处理命令处理得程序。

Status initStack(SqStack &S){

S.base=(int *)malloc(100; * sizeof(int));
if (!S.base) return 0;;
S.top=S.base;
S.stacksize=100;
return 1;;
}
#define STACK_INIT_SIZE 100;
后面多了分号。此外,你发现了吗?所有的展开都多了一个分号。
gcc -E file.c,这是我处理的方法。
去掉分号后,编译成功。已经帮你验证过了。自己在验证一下吧。数据结构
课程很重要,我最近在编写操作系统,可算是充分认识到它的好处了。
加油!如果还有这方面问题可以到我的空间留言。有空,我会回复。


int main()
{
return 0;
}
现在知道哪里出错了吧。你在定义
「已注销」 2010-04-23
  • 打赏
  • 举报
回复
error: expected ‘;’, ‘,’ or ‘)’ before ‘&’ token

c语言里面没有引用调用。改成*
在yanweimin 的书前言里面写的很清楚,这本书用了&,但是c语言没有。

69,335

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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