首先最简单的是实现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); }
原文地址:https://www.jb51.cc/datastructure/382500.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。