# include <stdio.h>
# include <stdlib.h>
# include <malloc.h>
# define stack_init_size 100
# define stackincrement 10
# define ok 1
# define error 0
struct sqstack{
int *top;
int *base;
int stacksize;
};
int initstack(sqstack &s)
{
s.base=(int *)malloc(stack_init_size * sizeof(int));
if(!s.base){
return error;
}
s.top=s.base;
s.stacksize=stack_init_size;
return ok;
}
int stackempty(sqstack &s)
{
if(s.top==s.base){
return ok;
}
else return error;
}
int push(sqstack &s,int e)
{
if((s.top-s.base)>=s.stacksize)
{
s.base=(int *)realloc(s.base,(s.stacksize+stackincrement)*sizeof(int));
if(!s.base)
return error;
s.top=s.base+s.stacksize;
s.stacksize+=stackincrement;}
*s.top++=e;
return ok;
}
int pop(sqstack &s,int &e)
{
if(s.top==s.base)
return error;
e=*--s.top;
return ok;
}
int main()
{
int N,e;
sqstack s;
initstack(s);
printf("ÇëÊäÈëÒ»¸öÊ®½øÖÆÊý£º");
scanf("%d",&N);
while(N)
{
push(s,N%8);
N=N/8;
}
while(!stackempty(s))
{
pop(s,e);
printf("%d",e);
}
return 0;
}