#include<stdio.h>
#include<iostream>
#include<stdlib.h>
#define TRUE 0
#define FALSE 1
#define SElemType int
#define Status int
#define STACK_INIT_SIZE 100
#define OVERFLOW 1
#define OK 0
#define STACKINCREMENT 10
#define ERROR 1
typedef struct {
SElemType*base;
SElemType *top;
intstacksize;
}SqStack;
Status InitStack(SqStack &S) {
S.base = (SElemType*)malloc (STACK_INIT_SIZE*sizeof(SElemType));
if (!S.base) exit(OVERFLOW);
S.top = S.base;
S.stacksize =STACK_INIT_SIZE;
return OK;
} //InitStack
Status Push(SqStack &S, SElemType e) {
if (S.top-S.base>=S.stacksize) //栈满
{ S.base=(SElemType *)realloc
(S.base, (S.stacksize+STACKINCREMENT)
* sizeof(SElemType));
if (!S.base) exit (OVERFLOW);
S.top = S.base + S.stacksize;
S.stacksize+=STACKINCREMENT;
} // if
*S.top++ = e; return OK; } //Push
Status Pop(SqStack &S, SElemType &e) {
if(S.top == S.base)return ERROR;
e = * -- S.top;
return OK;
} //Pop
Status StackEmpty(SqStack &S)
{
if (S.base==S.top)
return TRUE;
return FALSE;
}
int main()
{
SqStack S;
InitStack(S);
printf("pleaseinpit number to conver\n");
int e,f;
scanf("%d",&e);
int a;
while(e!=0)
{
a=e%8;
Push(S,a);
e=e/8;
}
while(StackEmpty(S)!=0)
{
Pop(S,f);
printf("%d",f);
}
return 0;
}