数制的转换
案例分析
当将一个十进制整数N转换为八进制数时,在计算过程中,把N与8求余得到的八进制数的各位依次进栈,计算完毕以后将栈中的八进制数依次栈输出,输出结果就是待求得的八进制数。
void conversion(int N){
InitStack(S);
while(N){
push(S,N%8);
N=N/8;
}
while(!StackEmpty(S)){
Pop(S,e);
cout<<e;
}
}
Status InitStack(SqStack &S){
S.base=new SElemType[MAXSIZE]; //为顺序栈动态分配一个容量为MAXSIZE的数组空间
if(!S.base)exit(OVERfLOW); //存储失败
S.top=S.base; //top初始为base,空栈
S.stacksize=MAXSIZE; //stacksize置为栈的最大容量
return Ok;
}
#define MAXSIZE 100
typedef struct{
SElemType *base; //栈底指针
SElemType *top; //栈顶指针
int stacksize; //栈可用的最大容量
}SqStack;