入门的整数进制转换为二进制,用栈的相关操作,但是每次输出结果都会有数字乱码

入门的整数进制转换为二进制,用栈的相关操作,但是每次输出结果都会有数字乱码
#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 100
typedef struct
{
int* base;
int* top;
int maxsize;
int tascksize;
}Sqstack;
int Initstack(Sqstack& L)
{
L.base = new int(MAXSIZE);
if (!L.base)return 0;
L.top = L.base;
L.tascksize = MAXSIZE;
return 1;
}

void push(Sqstack& L, int a)
{
if (L.top - L.base == L.tascksize)
return;
L.top = a;
L.top++;
}
/

void pop(Sqstack &L,int a)
{
if(L.base==L.top)
return ;
--L.top;
a=L.top;
}
/
void Zhuanhua(Sqstack& L, int a)
{
int b;
while (a)
{
b = a % 2;
push(L, b);
a = a / 2;
}
}
void printstack(Sqstack& L)
{
int* q = L.top;
while (q != L.base)
{
printf("%d ", *q);
L.top--;
q = L.top;
}
printf("%d\n", *L.base);
}
int main()
{
Sqstack L;
int s;
Initstack(L);
printf("请输入待转化元素:\n");
scanf("%d", &s);
Zhuanhua(L, s);
printf("结果是:\n");
printstack(L);
return 0;
}
结果

img


请各位大佬指点一下,万分感谢

#define MAXSIZE 100
typedef struct
{
    int* base;
    int* top;
    int maxsize;
    int tascksize;
}Sqstack;
int Initstack(Sqstack& L)
{
    L.base = new int(MAXSIZE);
    if (!L.base)return 0;
    L.top = L.base;
    L.tascksize = MAXSIZE;
    return 1;
}

void push(Sqstack& L, int a)
{
    if (L.top - L.base == L.tascksize)
        return;
    *L.top = a;
    L.top++;
}

void Zhuanhua(Sqstack& L, int a)
{
    int b;
    while (a)
    {
        b = a % 2;
        push(L, b);
        a = a / 2;
    }
}
void printstack(Sqstack& L)
{
    int* q = L.top;
    while (q != L.base)
    {
        printf("%d ", *q);
        L.top--;
        q = L.top;
    }
    printf("%d\n", *L.base);
}
int main()
{
    Sqstack L;
    int s;
    Initstack(L);
    printf("请输入待转化元素:\n");
    scanf("%d", &s);
    Zhuanhua(L, s);
    printf("结果是:\n");
    printstack(L);
    return 0;
}

img