第一个栈程序~,错了(不可运行)
程序代码:
#include<stdio.h> #include<malloc.h> #define Maxlen 20//顺序栈存放的最多文件个数为Maxlen typedef int elemtype; typedef struct sqstack { elemtype data[Maxlen]; int top; }stack; void InitStack(stack *st)//初始化空栈 { st->top=0;//以零表示空栈 } void push(stack *st,int x)//入栈 { if(st->top==Maxlen-1) { printf("该栈已满\n"); } else { st->top++; st->data[st->top]=x; } } void disp(stack *st)//输出栈中所有元素 { int i; for(i=st->top;i>0;i--) printf("%4d",st->data[i]); printf("\n"); } void Conversion(stack *st,int number,int digit) { InitStack(st);//初始化空栈 while(number) { push(st,number%digit); number/=digit; } } void main() { stack *st; int number,digit;//number 是十进制数,digit是要转换的进制基数 printf("please input the two numbers\n"); while(1) { printf("温馨提示:你输入的digit必须是2或者8中的一个\n"); scanf("%d%d",&number,&digit); if(number<0||digit<0) printf("the numbers you input must be over 0,please input again\n"); else break; } Conversion(st,number,digit);//进入进制转换函数 printf("输出十进制数%d转换成%d进制后的数",number,digit); disp(st);//输出转换后的对应进制数 }这个题的功能是实现十进制到二进制或八进制的转化,但是不可运行。不知道为何。我跟踪到输出函数disp貌似就是这个地方错了。,但是我不知道为什么??请指点一二,还有我栈多建立应该没错吧?