解答下啊,高手啊
#include<stdio.h>#define Maxsize 30
typedef struct
{
int s[Maxsize];
int *top;
int *base;
}stack;
void initstack(stack *st)
{
st->top=st->base;
}
int push(stack *st,int x)
{
if(st->top-st->base>=Maxsize-1)
return 0;
else
{
*(st->top++)=x;
return 1;
}
}
int stackempty(stack st)
{
if(st.top==st.base)
return 1;
else return 0;
}
int pop(stack *st,int x)
{
if(st->top==st->base)
return 0;
else
{
x=--(*st->top);
st->top--;
return 1;
}
}
void main()
{
stack st;
initstack(&st);
int n;
scanf("%d",&n);
while(n)
{
push(&st,n%2);
n=n/2;
}
while(!stackempty(st))
{
int e;
pop(&st,e);
printf("%d",e);
}
}