数据结构(C语言版)数制转换,用栈来实现十进制换成八进制的数。请各位品评品评。
#define stack_size 100
#define strack_ent 10
#define TRUE 1
#define FALSE 0
#define ERROR 0
#define OVERFLOW -2
#include<iostream>
using namespace std;
typedef struct {
int *base;
int *top;
int stacksize;
}sqstack;
int initstack(sqstack &s){
s.base=(int *)malloc(stack_size*sizeof(int));
if(!s.base)exit(OVERFLOW);
s.top=s.base;
s.stacksize=stack_size;
return 1;
}
int push(sqstack &s,int e){
if(s.top-s.base>=s.stacksize){
s.base=(int *)realloc(s.base,(s.stacksize+strack_ent)*sizeof(int));
if(!s.base)exit(OVERFLOW);
s.top=s.base+s.stacksize;
s.stacksize+=strack_ent;
}
*s.top++=e;
return 1;
}
int stackempty(sqstack s){
if(s.top==s.base)
return ERROR;
}
int pop(sqstack &s,int &e){
if(s.top==s.base)
return ERROR;
e=*--s.top;
return e;
}
int main(){
sqstack s;
int e,n;
initstack(s);
cin>>n;
while(n){
push(s,n%8);
n=n/8;
}
while(stackempty(s))
{
pop(s,e);
printf("%d",e);
}
printf("\n");
return 0;
}