-
-
[求助]问个数据结构栈实现的问题
-
发表于:
2007-6-21 12:57
5281
-
用栈实现字符串倒序输出
以下 在VC6.0下编译
会出现 syntax error : missing ')' before ';' 错误
把 代码中的STACK_INIT_SIZE 和 STACKINCREMENT 直接用相应的数值代替就没有报错。。
请大侠指教。。。。
//stack.cpp
#include "stdio.h"
#include "stdlib.h"
#define STACK_INIT_SIZE 100;
#define STACKINCREMENT 10;
/*
栈结构定义及实现
*/
typedef char SElemType;
typedef struct {
SElemType *base;
SElemType *top;
int stacksize;
}SqStack;
//初始化
int InitStack(SqStack &S)
{
S.base=(SElemType *)malloc(STACK_INIT_SIZE*sizeof(SElemType));
S.top=S.base;
S.stacksize=STACK_INIT_SIZE;
return 1;
}
//取栈顶元素
int GetTop(SqStack S, SElemType &e) {
if(S.top==S.base) return 0;
e=* (S.top-1);
return 1;
}
//压栈
int Push(SqStack &S,SElemType e) {
if(S.top-S.base>=S.stacksize) {
/*
栈空间满,扩容
*/
S.base=(SElemType*)realloc(S.base,(S.stacksize+STACKINCREMENT)*sizeof(SElemType));
if(!S.base) return 0;
S.top=S.base+S.stacksize;
S.stacksize+=STACKINCREMENT;
}
*S.top++=e;
return 1;
}
//出栈
int Pop(SqStack &S,SElemType &e) {
if(!S.top) return 0;
e=*--S.top;
return 1;
}
//栈判空
bool IsEmpty(SqStack s) {
return s.base==s.top;
}
void main()
{
SqStack s;
SElemType e;
InitStack(s);
char c;
while ((c=getchar())!='\n')
Push(s,c);
while (!IsEmpty(s))
{
Pop(s,e);
printf("%c",e);
}
}
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!