关于栈不能输出结果和其中变量的定义问题
//以下程序有两个问题请教//1、 elemtype e;sqstack S;如果我把这两个变量作为全部变量编译能通过,但是如果放在main函数或者conversion函数里定义,就会提示没有初始化,求解
//2、程序问题出在哪里,怎么没有输出结果,求大神指教
程序代码:#include <stdio.h>
#include <stdlib.h>
#define init_size 100
#define add_size 10
#define ERROR 0
#define OK 0
typedef int status;
typedef int elemtype;
typedef struct sqstack
{
elemtype *base;
elemtype *top;
int stack_size;//当前长度
}sqstack;
elemtype e;
sqstack S;
status init_stack(struct sqstack s)
{
s.base=(elemtype *)malloc(add_size*sizeof(elemtype));
if(!s.base)
exit(ERROR);
s.top =s.base ;
s.stack_size =init_size;
return OK;
}
status Push(sqstack s,elemtype e)
{
if(s.top -s.base >=s.stack_size )
{
s.base =(elemtype *)realloc(s.base ,(s.stack_size +add_size)*sizeof(elemtype));
if(!s.base )
exit(ERROR);
s.top =s.base +s.stack_size ;
s.stack_size =s.stack_size +add_size;
}
*s.top ++=e;
return OK;
}
status Pop(sqstack s,elemtype e)
{
if(s.top ==s.base )
return(ERROR);
else
e=*--s.top;
return OK;
}
void conversion (int Num)
{ // 算法3.1
// 对于输入的任意一个非负十进制整数,打印输出与其等值的八进制数
init_stack(S); // 构造空栈
while (Num) {
Push(S, Num % 8);//
Num = Num/8;
}
while (!(S.top==S.base)) {
Pop(S,e);
printf ("%d", e);
}
printf("\n");
} // conversion
int main()
{
int Num;
printf("请输入需要一个转换为8进制的10进制数:");
scanf("%d",&Num);
conversion (Num);
return 0;
}







