达克赛德和超人谁强:请大家帮着改一下这程序,谢谢拉

来源:百度文库 编辑:神马品牌网 时间:2024/04/23 16:12:33
/* 标准文档模板 */

#include "Stdio.h"
#include "Conio.h"
#define ERROR 0
#define OK 1
#define OVERFLOW -1
#define STAK_INIT_SIZE 100;
#define INCREMENT 10;
typedef int SElemType;
typedef int Status;
typedef struct { /*顺序栈的定义*/
SElemType *base;
SElemType *top;
int stacksize;
}SqStack;
/*表示和实现*/
Status InitStack(SqStack S){
/*建立一个空栈*/
S.base=(SElemType*)malloc(STAK_INIT_SIZE*sizeof(SElemType));
if(!S.base)exit(OVERFLOW);
S.top=S.base;
S.stacksize=STAK_INIT_SIZE;
return OK;
}
Status GetTop(SqStack S,SElemType e){
/*用e返回堆栈的首元素*/
if(S.top==S.base)return ERROR;
e=*(S.top-1);
return OK;
}
Status Push(SqStack S,SElemType e){
/*插入元素e*/
if(S.top-S.base>=S.stacksize){
/*申请附加空间*/
S.base=(SElemType*)realloc(S.base,(S.stacksize+INCREMENT)*sizeof(SElemType))
if(!S.base)exit(OVERFLOW);
S.top=S.base+S.stacksize;
S.stacksize+=INCREMENT;
}
*(S.top++)=e;
return OK;
}
Status Pop(SqStack S,SElemType &e){
/*若栈不空,则删除栈顶元素*/
if(S.top==S.base)exit(ERROR);
e=*(--S.top);
return OK;
}
/*-----------主函数------------*/
int main(void)
{
/* 此处添加你自己的代码 */
SqStack S;
int i,e;
InitStack(S);
for(i=1;i<=10;i++){
Push(S,i);
}
GetTop(S,e);
printf("%d\n",e);
Pop(S,k)
GetTop(S,e);
printf("%d",e);
getch();
return 0;
}

修改如下:(供参考)
(1) 加上 头文件 #include <malloc.h>
(2) 去掉 #define STAK_INIT_SIZE 100;
#define INCREMENT 10; 后面的分号(;)
(3) 将exit(OVERFLOW);和exit(ERROR); 改为 return ERROR; 或 return false;
(4)建议: 将 e 和 S 在main 中 初始化.

你如果说情题目会方便别人帮你找错误的