怎么编译不过,而且会有声音
#include<iostream>
#include<malloc.h>
#define STACK_INIT_SIZE 100
#define STACKINCREMENT 10
#define OK 1;
#define ERROR 0;
using namespace std;
typedef int Status;
typedef char ElemType;
typedef char SElemType;
typedef struct
{
SElemType *base;
SElemType *top;
int stacksize;
}SqStack;
Status InitStack (SqStack &S);
Status DestroyStack(SqStack &S);
Status ClearStack(SqStack &S);
Status StackEmpty(SqStack S);
int StatusLength(SqStack S);
Status GetTop(SqStack S,SElemType &e); //若栈不空,则用e返回S的栈顶元素,并返回OK,否则返回ERROR
Status Push(SqStack &S,char e); //插入元素e为新的栈顶元素
Status Pop(SqStack &S,char &e); //若栈不空,则删除S的栈顶元素,用e返回其值,并返回OK,否则返回ERROR
Status StackTraverse(SqStack S,Status (*visit)()); //从栈顶到栈底依次对栈中每个元素调用函数visit(),一旦调用失败,则返回失败
Status InitStack(SqStack &S){
S.base = (ElemType *) malloc(STACK_INIT_SIZE *sizeof(ElemType));
if(!S.base ) return ERROR; //存储分配失败
S.top =S.base; //栈空时,栈顶和栈底指针相同
S.stacksize = STACK_INIT_SIZE; //增加内存空间
return OK;
}
Status StackEmpty(SqStack S)
{
if(S.top == S.base)
return OK
else return ERROR;
}
Status GetTop(SqStack S, SElemType &e){
if(S.top == S.base) return ERROR;
e= *(S.top -1);
return OK;
}
Status Push(SqStack &S,SElemType e){
if(S.top-S.base >= S.stacksize-1){
S.base = (SElemType *)realloc(S.base,(S.stacksize + STACKINCREMENT)* sizeof(SElemType)); //栈满,增加存储空间
if(!S.base) return ERROR;
S.top = S.base + S.stacksize;
S.stacksize += STACKINCREMENT;
}
*(S.top ++) = e;
return OK;
}
Status Pop(SqStack &S,SElemType &e){
if(S.top == S.base) return ERROR;
e = *(--S.top);
return OK;
}
int main()
{
SqStack S;
char x,y;
x='c';y='k';
Push(S,'c');Push(S,'a');Push(S,'k');
Pop(S,x); Push(S,'t');Push(S,'c');
Pop(S,x);Push(S,'s');
while(! StackEmpty(S)){ Pop(S,y);cout<<y<<endl;};
cout<<x<<endl;
return 0;
}
用C++编写的,关于栈的问题,可是怎么编译不过,哪里出了问题,求解?
[解决办法]
看上去没什么错误,把错误码贴出来
[解决办法]
S没有初始化
InitStack(S);
[解决办法]
贴出错误提示更好追踪。
[解决办法]
没有初始化~
InitStack
[解决办法]
程序编译没任何问题
编译环境:
gcc 4.5.3 for cygwin
vc2008 64bit
c++ builder 2010