使用栈实现10进制的数向任何进制的数转换。
/*
使用栈实现10进制到任何进制数的转化
*/
#include<stdio.h>
#define MAX 100
//定义栈结构
typedef struct{
int *base;
int *top;
int stacksize;
}SqStack;
//初始化栈
int InitStack(SqStack &S){
S.base=new int[MAX];
if(!S.base){
return 0;
}
S.top=S.base;
S.stacksize=MAX;
return 1;
}
//判断栈是否为空
int IsEmpty(SqStack &S){
if(S.top==S.base){
return 1;//栈空
}else{
return 0;//栈非空
}
}
//入栈
int Push(SqStack &S,int e){
if(S.top-S.base==S.stacksize){
return 0;//栈满
}
*S.top++=e;
return 1;
}
//出栈
int Pop(SqStack &S,int &e){
if(S.top==S.base){
return 0;//栈空
}
e=*--S.top;
return 1;
}
void Conversion(SqStack &S,int n,int m){
while(n){
Push(S,n%m);
n=n/m;
}
while(!IsEmpty(S)){
int e;
Pop(S,e);
printf("%d",e);
}
}
int main(){
SqStack S;
if(InitStack(S)){
printf("栈S初始化成功!\n");
}else{
printf("栈S初始化失败!\n");
}
printf("请输入要转换的数n和进制数:");
int n,m;
scanf("%d %d",&n,&m);
Conversion(S,n,m);
return 0;
}