关于栈不能输出结果和其中变量的定义问题
//以下程序有两个问题请教//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; }