进制转换的栈实现

#include<stdio.h>
#include<stdlib.h>
#define STACK_INIT_SIZE 100
#define STACKINCREMENT 10
typedef struct {
    int *base;
    int *top;
    int stackzize;
}SqStack;
int InitStack(SqStack &S) {
    S.base = (int *)malloc(STACK_INIT_SIZE * sizeof(int));
    if(!S.base) exit(0);
    S.top = S.base;
    S.stackzize = STACK_INIT_SIZE;
    return 1;
}
int GetTop(SqStack S,int &e){
    if(S.top == S.base) return 0;
    e = *(S.top-1);
    return 1;
}
int Push(SqStack &S,int e){
    if(S.top - S.base >= S.stackzize){
        S.base = (int *)realloc(S.base, 
        (S.stackzize + STACKINCREMENT) * sizeof(int));
        if(!S.base) exit(0);
        S.top = S.base + S.stackzize;
        S.stackzize += STACKINCREMENT;
    }
    *S.top++ = e;
    return 1;
}
int Pop(SqStack &S,int &e){
    
    if (S.top == S.base) return 0;
    e = * --S.top;
    return 1;
}
int StackEmpty(SqStack S){
    if (S.top == S.base) return 1;
        else return 0;
}
int main(){
    int N,e;
    SqStack S;
    InitStack(S);
    scanf("%d",&N);
    while(N){
        Push(S,N%8);
        N/=8;
    }
    while(!StackEmpty(S)){
        Pop(S,e);
        printf("%d",e);
    }
}

这个是比较简单的一个栈实现   八进制—>十进制, 其目的是给入门的同学们源码,方便理解学习

原文地址:https://www.cnblogs.com/zhangzimu/p/6873344.html