#include<iostream>
using namespace std;
typedef int SElemtype;
typedef int Status;
#define STACK_INIT_SIZE 100
#define STACKINCREMENT 10
#define OK 1
#define ERROR 0
#define OVERFLOW -1

typedef struct{
    SElemtype *base;
    SElemtype *top;
    SElemtype stacksize;
}SqStack;

Status InitStack(SqStack &S)
{
    S.base=new SElemtype();
    if(!S.base) exit(OVERFLOW);
    S.base=S.top;
    S.stacksize=STACK_INIT_SIZE;
    return OK;
}

Status StackEmpty(SqStack S)
{
    if(S.base==S.top)
        return 0;
    else return 1;
}

Status Push(SqStack &S,SElemtype e)
{
    if(S.top-S.base>=S.stacksize) 
    { 
        S.base=new SElemtype;
        if(!S.base) exit(OVERFLOW);
        S.top=S.base+S.stacksize;
        S.stacksize+=STACKINCREMENT;
    }
    *S.top=e;
    S.top++;
    return OK;
}

Status Pop(SqStack &S,SElemtype e)
{
    if(S.base==S.top) return ERROR;
    e=*S.top;
    S.top--;
    return OK;
}

int main()
{   
    int N;
    SElemtype f;
    SqStack Sa;
    InitStack(Sa);
    cout<<"请输入一个十进制数:"<<endl;
    cin>>N;
    while(N){
        Push(Sa,N%8);
        N=N/8;
    }
    while(!StackEmpty(Sa)){
        Pop(Sa,f);
        cout<<"与该值等值的八进制数:"<<endl;
        cout<<f<<endl;
    }return 0;
}
有点错误,希望帮忙看看,谢谢