数据结构——进制转换(10—n)
进制转换(10进制——n进制)
所需知识:栈
#include<stdio.h>
#include<bits/stdc++.h>
using namespace std;
#include<malloc.h>
#include<string>typedef int Status;
#define OK 1
#define ERROR 0
#define TRUE 1
#define FALSE 0// ------栈的顺序存储结构表示----------
#define STACK_INIT_SIZE 100 // 存储空间初始分配量
#define STACK_INCREMENT 10 // 存储空间分配增量
typedef int ElemType;
typedef struct {ElemType *base; // 栈底指针ElemType *top; // 栈顶指针int stacksize; // 栈空间大小
} SqStack;void InitStack(SqStack &S)
{// 构造一个空栈Sif(!(S.base = (ElemType *)malloc(STACK_INIT_SIZE * sizeof(ElemType))))exit(OVERFLOW); // 存储分配失败S.top = S.base;S.stacksize = STACK_INIT_SIZE;
}void DestroyStack(SqStack &S)
{// 销毁栈S,S不再存在free(S.base);S.base = NULL;S.top = NULL;S.stacksize = 0;
}void Push(SqStack &S, ElemType e)
{if(S.top - S.base >= S.stacksize) { // 栈满,追加存储空间S.base = (ElemType *)realloc(S.base, (S.stacksize + STACK_INCREMENT) * sizeof(ElemType));if(!S.base)exit(OVERFLOW); // 存储分配失败S.top = S.base + S.stacksize;S.stacksize += STACK_INCREMENT;}*(S.top)++ = e;
}Status Pop(SqStack &S, ElemType &e)
{// 若栈不空,则删除S的栈顶元素,用e返回其值,并返回OK;// 否则返回ERRORif(S.top == S.base)return ERROR;e = *--S.top;return OK;
}Status GetTop(SqStack S, ElemType &e)
{// 若栈不空,则用e返回S的栈顶元素,并返回OK;// 否则返回ERRORif(S.top > S.base) {e = *(S.top - 1);return OK;}elsereturn ERROR;
}Status StackEmpty(SqStack S)
{// 若栈S为空栈,则返回TRUE,否则返回FALSEif(S.top == S.base)return TRUE;elsereturn FALSE;
}
关键函数代码
//思路
1.将数据a每次取余进制数,并进栈
2.对数据a进行修改,每次讲a整除进制数
3.直到a<0为止
//将10进制数a转换为n进制数
int conversion(int a,int n)
{SqStack S;InitStack(S);while(a){Push(S,a%n);a/=n;}int e;while(S.top!=S.base){Pop(S,e);printf("%d",e);}return 0;
}
可执行程序代码
#include<stdio.h>
#include<bits/stdc++.h>
using namespace std;
#include<malloc.h>
#include<string>typedef int Status;
#define OK 1
#define ERROR 0
#define TRUE 1
#define FALSE 0// ------栈的顺序存储结构表示----------
#define STACK_INIT_SIZE 100 // 存储空间初始分配量
#define STACK_INCREMENT 10 // 存储空间分配增量
typedef int ElemType;
typedef struct {ElemType *base; // 栈底指针ElemType *top; // 栈顶指针int stacksize; // 栈空间大小
} SqStack;void InitStack(SqStack &S)
{// 构造一个空栈Sif(!(S.base = (ElemType *)malloc(STACK_INIT_SIZE * sizeof(ElemType))))exit(OVERFLOW); // 存储分配失败S.top = S.base;S.stacksize = STACK_INIT_SIZE;
}void DestroyStack(SqStack &S)
{// 销毁栈S,S不再存在free(S.base);S.base = NULL;S.top = NULL;S.stacksize = 0;
}void Push(SqStack &S, ElemType e)
{if(S.top - S.base >= S.stacksize) { // 栈满,追加存储空间S.base = (ElemType *)realloc(S.base, (S.stacksize + STACK_INCREMENT) * sizeof(ElemType));if(!S.base)exit(OVERFLOW); // 存储分配失败S.top = S.base + S.stacksize;S.stacksize += STACK_INCREMENT;}*(S.top)++ = e;
}Status Pop(SqStack &S, ElemType &e)
{// 若栈不空,则删除S的栈顶元素,用e返回其值,并返回OK;// 否则返回ERRORif(S.top == S.base)return ERROR;e = *--S.top;return OK;
}Status GetTop(SqStack S, ElemType &e)
{// 若栈不空,则用e返回S的栈顶元素,并返回OK;// 否则返回ERRORif(S.top > S.base) {e = *(S.top - 1);return OK;}elsereturn ERROR;
}Status StackEmpty(SqStack S)
{// 若栈S为空栈,则返回TRUE,否则返回FALSEif(S.top == S.base)return TRUE;elsereturn FALSE;
}
//将10进制数a转换为n进制数
int conversion(int a,int n)
{SqStack S;InitStack(S);while(a){Push(S,a%n);a/=n;}int e;while(S.top!=S.base){Pop(S,e);printf("%d",e);}return 0;
}int main(){int a,n;printf("输入要转化的10进制数(仅限整数)a和要转化的进制n: ");scanf("%d%d",&a,&n);conversion(a,n);
}
数据结构——进制转换(10—n)相关推荐
- Python进制转换10进制转换为16进制,不使用hex函数
笔试中遇到的问题 Python进制转换10进制转换为16进制,不使用hex函数 给定一个整数,编写一个算法将这个数转换为十六进制数.对于负整数,我们通常使用 补码运算 方法. 注意: 十六进制中所有字 ...
- c# .net 16进制转换10进制
业务调用 #region C#十六进制字符串转十进制 { Console.WriteLine("-----------十六进制字符串转十进制---------");//H:十六进制 ...
- 利用10位AD转换器 及 LED 数码管,实现由AD转换器采集温度,并用数码管显示。温度超出一定范围,LED 指示灯闪烁报警。(主要分析进制16进制转换10进制,并用数码管显示问题)
** 题目: ** 利用原有的电路 AD 及 LED 数码管显示等例子,进行整合.实现由 AD转换器采集温度(用可调电阻模拟),温度在数码管上显示.当温度超出一定范围,用 LED 指示灯进行闪烁报警. ...
- C++16进制转换10进制
废话不多,直接上代码: #include <iostream> #include <cmath> //要用到pow()函数必须要这个库 using namespace std; ...
- 威纶通TK6071iQ触摸屏通过宏指令与modbus温湿度传感器通信,16进制转换10进制。
我查了百度上面的资料,很少有关于这一方面的知识,都是靠自己不断搜索,然后尝试出来,也非常感谢网上的前辈们把一点点的疑问解答了.我这里总结一下. 1,首先是触摸屏连接仪表,线都是485两条线接.. 2, ...
- 16进制转换10进制的方法
2019独角兽企业重金招聘Python工程师标准>>> 之所以想到这个问题,是看阻塞队列大小的时候,看不懂: public static final int MAX_VALUE ...
- shell 进制转换 10转16
两种方式 10 转 16 printf "%X\n" 15 echo "obase16;15" | bc
- java 10zhuan8,Java代码 10进制转2、8、16进制转换 / 2、8、16进制转10进制转换
public static void main(String[] args) { int i = 10; System.out.println("***********10进制转换2进制.8 ...
- python16进制转10进制_python 字节串及10进制,16进制相关转换
进行协议解析时,总是会遇到各种各样的数据转换的问题,从二进制到十进制,从字节串到整数等等 整数之间的进制转换: 10进制转16进制: hex(16) ==> 0x10 16进制转10进制: in ...
最新文章
- LoadRunner12使用教程(三)——Action迭代
- 算法入门经典-第七章 例题7-2-2 可重集的排列
- LINUX下GDB反汇编和调试
- 应力循环次数60ant_恒温恒湿箱循环试验失效分析
- activePerl的PPM如何使用http代理
- python 批量修改密码
- python可变参数函数二阶导数公式_python中函数的可变参数
- 局域网(信息学奥赛一本通-T1391)
- 练习图200例图纸讲解_实物图+电气图纸讲解:教你学会看配电系统图,不收藏,可惜了...
- Netty工作笔记0048---Http服务过滤资源
- servlet请求转发
- 性能测试中容易混淆的概念
- 解决Tuxera NTFS for Mac软件安装问题
- tomcat source code in eclipse
- 视频搬运伪原创 视频修改MD5值
- 计算机无法安装蓝牙驱动,windows10系统安装蓝牙驱动图文教程|windows10系统如何安装蓝牙驱动...
- 【应急响应】Linux入侵排查
- 激励机制:区块链的幕后英雄
- python基础篇——函数
- audio接线图解_图文:主板跳线(排线)连接技巧HD AUDIO连线接法
热门文章
- Docker 部署dotnetcore
- 在ASP.NET Core中使用百度在线编辑器UEditor
- 编程语言的发展趋势及未来方向(1):历史回顾及趋势概述
- Android Studio开发基础之细节问题笔记
- Android之TrafficStats实现流量实时监测
- (9)有一些人在学习编程的时候总以为代码是死板的
- k8s mysql数据同步_K8s——MySQL实现数据持久化
- 里rust怎么找蓝图_Rust错误处理
- 神奇却又随处可见的斐波那契曲线...
- 被清华免试录取的围棋天才,横扫60位围棋大师的最强AI,竟然都输给了高中生!?...