C++ 链栈实现10进制转换为2、8、16进制(详细)
代码实现
(程序中已详细注释,这里不再重复说明,有疑惑可留意哦)
//导入头文件
#include<iostream>
#include<stdio.h>
#include<malloc.h>
using namespace std;//声明命名空间//链栈
typedef struct stacknode{int data;//数据域struct stacknode *next;//指针域
}stacknode,*LinkStack;//初始化栈,创建一个空栈
void initLinkStack(LinkStack &L){L=NULL;//空链站
} //判断栈是否为空
int emptyLinkStack(LinkStack L){if(L==NULL){return 0;}else{return 1;}
}//入栈
void pushLinkStack(LinkStack &L,int e){LinkStack p;p=(LinkStack)malloc(sizeof(stacknode));p->data=e;p->next=L;L=p;
}//出栈
void popLinkStack(LinkStack &L,int &e){ LinkStack p;p=L;e=L->data;//取出栈顶元素给eL=L->next;delete(p);
}//十进制转2、8、16进制,采用除基倒取余法
void numberConversionL(int oNumber,int cvNumber){LinkStack L; //创建栈 int x;initLinkStack(L); //初始化栈 while(oNumber){ x=oNumber%cvNumber;pushLinkStack(L,x);//余数入栈oNumber=oNumber/cvNumber;}//余数出栈 while(emptyLinkStack(L)){ popLinkStack(L,x);switch(x){case 0: case 1: case 2: case 3:case 4: case 5: case 6: case 7:case 8: case 9:cout<<x; break;case 10:cout<<"A"; break;case 11:cout<<"B"; break;case 12:cout<<"C"; break;case 13:cout<<"D"; break;case 14:cout<<"E"; break;case 15:cout<<"F"; break;}}
} //主函数
int main(){int oNumber,cvNumber;int oNumberL,cvNumberL;int choose;cout<<"请选择所需功能\n1.使用链栈转换\n2.退出程序"; cout<<endl; //换行 cin>>choose;while(choose!=2){switch(choose){case 1:{cout<<"请输入要转换的十进制数:"<<endl;cin>>oNumberL;cout<<"请输入要转换至的进制,仅限输入2、8以及16:"<<endl;cin>>cvNumberL;numberConversionL(oNumberL,cvNumberL);break;}default:cout<<"\n!!!您的选择不正确,请重新选择!!!\n";}cout<<endl; //换行 cout<<"请选择所需功能\n1.使用链栈转换\n2.退出程序"; cout<<endl; //换行 cin>>choose; }return 0;
}
运行结果
写在最后:
链栈、顺序栈实现进制转换原理相同,区别在于顺序栈、链栈的自身结构不同,如果想进一步了解顺序栈转换,请看文章:
“C++-顺序栈实现10进制转换为2、8、16进制(详细)”(点击跳转)
C++ 链栈实现10进制转换为2、8、16进制(详细)相关推荐
- 10进制整型转16进制整型?
探究10进制整型转16进制整型 1).16进制字符串与整型的互换: String str="1A"; int t=Integer.parseInt(str, 16) ...
- ASCII表完整版(包含16进制对应表)——看看16进制与10进制的转化
ASCII码表完整版 ASCII值 16进制 控制字符 ASCII值 16进制 控制字符 0 00H NUT 32 20H (space) 1 01H SOH 33 21H ! 2 02H STX 3 ...
- java-16进制字符串转16进制int、将10进制的数字转为16进制
String h="76F41000"; int re= new BigInteger(h, 16).intValue() 将10进制的数字转为16进制字符串 System.out ...
- python 16进制补零_Python输出16进制不带0x补零,整数转16进制,字符串转16进制
python输出16进制不带0x补零,整数转16进制,字符串转16进制 在开发中,我们偶尔会遇到需要将数据通过控制台打印出来,以检查数据传输的准确性.例如调试服务端刚接到的二进制数据(里面包含很多非可 ...
- Python输出16进制不带0x补零,整数转16进制,字符串转16进制
Python输出16进制不带0x补零,整数转16进制,字符串转16进制 在开发中,我们偶尔会遇到需要将数据通过控制台打印出来,以检查数据传输的准确性.例如调试服务端刚接到的二进制数据(里面包含很多 ...
- python hex 补零_Python输出16进制不带0x补零,整数转16进制,字符串转16进制
Python输出16进制不带0x补零,整数转16进制,字符串转16进制 在开发中,我们偶尔会遇到需要将数据通过控制台打印出来,以检查数据传输的准确性.例如调试服务端刚接到的二进制数据(里面包含很多非可 ...
- c语言中10转8和16的转换,(C语言)10进制转换2,8,16进制
(C语言)10进制转换2,8,16进制 作者:vinseven #include"stdio.h" #include"conio.h" #include&quo ...
- c语言16进制转换为ascii码,C--16进制文本转换为ascii码
我用的将16进制文本转换为ascii码的C语言代码.16进制文本复制到文件test.txt中,运行程序,将得到输入. 例: 运行:./CSTRING test.txt 其中,test.txt文件内容为 ...
- python将16进制字符串转换为整数_Python 16进制与字符串的转换
电脑上装了Python2.7和3.3两个版本,平时运行程序包括在Eclipse里面调试都会使用2.7,但是由于某些原因在cmd命令行中输入python得到的解释器则是3.3, 一直没对此做处理,因为这 ...
最新文章
- 说说Keepalived的脑裂
- 《Linux系统初讲》学习总结(一)
- C# WPF 中用代码模拟鼠标和键盘的操作
- GoAhead2.5源代码分析之6-访问验证(security.c)
- Android 11 修改libcore Cipher AS测试
- 阿里云天池平台官方出品!从0到1层层拆解天池大赛赛题 | 文末送书
- 【thymeleaf】Access to request parameters is forbidden in this context
- 腾讯云Service Mesh生产实践及架构演进
- final 实例域+final类+final方法(阻止继承)
- 原生javascript添加和删除class
- 零基础掌握百度地图兴趣点获取POI爬虫(python语言爬取)(代码篇)
- Android 百度地图开发(三)--- 实现比例尺功能和替换自带的缩放组件
- matlab在遥感数字图像处理方面的应用
- 【STM32H7】第5章 ThreadX NetXDUO网络协议栈介绍
- 微信公众号推送的模板消息无法跳转到小程序指定页面?
- 「手绘控笔技巧」最有效的控笔练习,让你少走很多弯路
- windows服务器双网卡链路聚合_[分享]Windows 8 及以上版本 开启多网卡链路聚合 | 霸王硬上弓's Blog...
- Mathematica13.1的安装与使用配置
- 使用MD5进行加密解密【代码实现】
- python怎么样自动生成证件照
热门文章
- UWB精准定位:让电厂更安全
- (附加对私信的统一回复)同济大学高等数学下册第十二章无穷级数以及每日一题
- 【vue页面数据请求进度条--页面爱心--借助插件实现页面防抖-echarts实现自适应】
- cas未能够识别出目标 ***;票根
- matlab:线性规划实例编程---采用linprog包
- H5-websocket实战案例
- Word控件Spire.Doc 【打印】教程(2):保打印word文档不显示打印处理对话框
- Hadoop HA部署(阿里云)
- SpringMVC+vue实现前后端分离的学生考勤管理
- 一剑霜寒十四州——浅析内存分区(浅显)