第一个栈程序~,错了(不可运行)
程序代码:#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貌似就是这个地方错了。,但是我不知道为什么??请指点一二,还有我栈多建立应该没错吧?



