#include <iostream>
using namespace std;
const int stack_size=30;
const int stack_increase=10;
typedef struct
{
int* base;
int *top;
int length;
}SqStack;
SqStack InitStack(SqStack &S)
{
S.base =(int *)malloc(stack_size * sizeof(int));
if(!S.base) exit (OVERFLOW);
S.top=S.base;
S.length=stack_size;
return S;
}
bool StackEmpty(SqStack &S)
{
if(S.base==S.top)
return true;
}
int Push(SqStack &S,int e)
{
if(S.top-S.top>stack_size)
{
S.base=(int *)realloc(S.base,(S.length+stack_increase)*sizeof(int));
if(!S.base)exit(OVERFLOW);
S.top=S.base+S.length;
S.length+=stack_increase;
}
*S.top++=e;
return e;
}
int Pop(SqStack &S,int &e)
{
if(S.top==S.base)
return 0;
e = *(--S.top);
return e;
}
int Getnumber(SqStack &S)
{
return S.top-S.base;
}
void main()
{
SqStack test;
InitStack(test);
int e;
cout<<"Please enter an number(按Ctrol+Z结束):"<<endl;
int N;
cin>>N;
while (N)
{
Push(test,N%8);
N=N/8;
}
int num=Getnumber(test);
for(int i=0;i<=num-1;++i)
{
Pop(test,e);
cout<<e;
}
}
08-15
08-15
08-15