主题:[原创]栈的使用
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define INFEASIBLE -1
#define OVERFLOW -2 /*在math.h中定义OVERFLOW的值为3 */
typedef int Status; /* Status是函数的类型,其值是函数结果状态代码,如OK等 */
typedef int SElemType; /*指定操作对象为整型*/
typedef int Boolean;
#define STACK_INIT_SIZE 100;
#define STACKINCREMENT 10;
typedef struct{
SElemType *base;
SElemType *top;
int stacksize;
}SqStack;
#include"zhan.h"
Status InitStack(SqStack &S)
{
S.base=(SElemType * ) malloc(STACK_INIT_SIZE * sizeof(SElemType));
if(!S.base) exit(OVERFLOW);
S.top=S.base;
S.stacksize=STACK_INIT_SIZE;
return OK;
}
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)
{
S.base=(SElemType *)realloc(S.base,(S.stacksize+STACKINCREMENT)*sizeof(SElemType));
if(!S.base) exit(OVERFLOW);
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;
}
void main()
{
SqStack S;
int i,n=5,e,g;
InitStack(S);
for(i=1;i<=n;i++)
{
cin>>g;
Push(S,g);
GetTop(S,e);
cout<<"栈内元素:"<<e<<endl;
}
for(i=5;i>0;i--)
{
Pop(S,e);
cout<<"输出元素:"<<endl;
}
}
这个程序编译时总是出现同样的错误:说missing "("before ":".我检查了几遍,都没有少。不知道问题出在哪?
#define FALSE 0
#define OK 1
#define ERROR 0
#define INFEASIBLE -1
#define OVERFLOW -2 /*在math.h中定义OVERFLOW的值为3 */
typedef int Status; /* Status是函数的类型,其值是函数结果状态代码,如OK等 */
typedef int SElemType; /*指定操作对象为整型*/
typedef int Boolean;
#define STACK_INIT_SIZE 100;
#define STACKINCREMENT 10;
typedef struct{
SElemType *base;
SElemType *top;
int stacksize;
}SqStack;
#include"zhan.h"
Status InitStack(SqStack &S)
{
S.base=(SElemType * ) malloc(STACK_INIT_SIZE * sizeof(SElemType));
if(!S.base) exit(OVERFLOW);
S.top=S.base;
S.stacksize=STACK_INIT_SIZE;
return OK;
}
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)
{
S.base=(SElemType *)realloc(S.base,(S.stacksize+STACKINCREMENT)*sizeof(SElemType));
if(!S.base) exit(OVERFLOW);
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;
}
void main()
{
SqStack S;
int i,n=5,e,g;
InitStack(S);
for(i=1;i<=n;i++)
{
cin>>g;
Push(S,g);
GetTop(S,e);
cout<<"栈内元素:"<<e<<endl;
}
for(i=5;i>0;i--)
{
Pop(S,e);
cout<<"输出元素:"<<endl;
}
}
这个程序编译时总是出现同样的错误:说missing "("before ":".我检查了几遍,都没有少。不知道问题出在哪?