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


											


	    

	