#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); } }
这个是比较简单的一个栈实现 八进制—>十进制, 其目的是给入门的同学们源码,方便理解学习