高中化学选修4视频:请高手帮忙看一下这个C语方哪里错了(只有这么多分了)

来源:百度文库 编辑:杭州交通信息网 时间:2024/05/05 01:44:57
/*这是一个用栈实现十进制转换8进制的一道题.. */
#define true 1
#define false 0
#define ok 1
#define error 0
#define infeasible -1
#define overflow -2
#define stack_init_size 100
#define stackincrement 10
typedef int status;
typedef int selemtype;

typedef struct{
selemtype *base;
selemtype *top;
int stacksize;
}sqstack;
/*提示说这行有错误status initstack (sqstack &s)好像是少定义了个什么东西..*/
/*************************************************************************************************************/
status initstack (sqstack &s){

s.base=(selemtype*)malloc(stack_init_size*sizeof(elemtype));
if(!s.base)exit(overflow);
s.top=s.base;
s.stacksize=stack_init_size;

return ok;
}

status push (sqstack &s,selemtype e){

if(s.top-s.base>=s.stacksize){
s.base=(elemtype*)realloc(s.base,(s.stacksize+stackincrement)*sizeof(elemtype));
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 conversion(){
sqstack s;
int n;

initstack (s);
scnaf("%d",n);

while(n){
push(s,n%8);
n=n/8;
}
while(!stackempty(s)){
pop(s,e);
printf("%d",e);
}
}
/************************************************************************************************************/

main(){
printf("%d",conversion);
}

1.C语言没有引用的!(&s)
2.elemtype 没定义!
3.scnaf("%d",n); 拼错了
4.stackempty()没定义
5.e没定义
6.缺少#Include <stdio.h> 和 <stdlib.h>