本文主要是介绍《数据结构》算法3.8栈实现数制转换,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
首先最简单的是实现10进制和2进制的转换
/*
输入一个数,然后输出其对应的8进制的数
*/
#include<stdio.h>
#define MAX 1000//顺序栈存储空间最大值
//int n,m;//n表示输入的数,m表示输出的数的进制 //先定义一个顺序栈的结构
typedef struct{int *base;//栈底4指针 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.base==S.top){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;//栈空 //printf("栈空\n");}e=*--S.top;return 1;//printf("%d",e);
}//数制转换
void conversion(SqStack &S,int n){//n表示输入的数,m表示输出的数的进制 InitStack(S);while(n){Push(S,n%2);n=n/2;}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");}if(IsEmpty(S)){printf("栈为空.\n");}else{printf("栈非空.\n");}int n;printf("请输入数n:");scanf("%d",&n);conversion(S,n);
}
这篇关于《数据结构》算法3.8栈实现数制转换的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!