数据结构c语言进制转换八进制,C语言数据结构中数制转换实例代码
C语言数据结构中数制转换实例代码
数制转换是严蔚敏的数据结构那本书中的例子,但是那本书中的例子大都是用伪代码的形式写的,不是很容易理解和实现,对初学者造成了不小的困扰,在这里我们将其详尽的实现出来,以便初学者调试和运行,并从中有所收获。
#include
#include
#include
#define STACK_INIT_SIZE 10 //定义最初申请的内存的大小
#define STACK_INCREMENT 2 //每一次申请内存不足的时候扩展的大小
#define OVERFLOW 0
#define FALSE 0
#define TRUE 1
#define ERROR 0
#define INFEASIBLE 0
#define OK 1
typedef int SElemType;
typedef int Status;
int Length;
typedef struct SqStack{
int stacksize;
SElemType *top;
SElemType *base;
}SqStack;
Status InitStack(SqStack &S){
if(!(S.base = (SElemType *)malloc(STACK_INIT_SIZE * sizeof( SElemType))))
exit(-1);
S.top = S.base;
S.stacksize = STACK_INIT_SIZE;
return OK;
}
Status Push(SqStack &S , SElemType e){
if(S.top - S.base >= S.stacksize)
{
S.base = (SElemType *)realloc(S.base,(S.stacksize+STACK_INCREMENT) * sizeof( SElemType));
if(!S.base)
exit(OVERFLOW);
S.top = S.base + S.stacksize;
S.stacksize += STACK_INCREMENT;
}
*S.top++ = e;
return OK;
}
void OutList(SqStack S ){
S.top = S.base;
for(int i = 0; i
printf("%d\t",*(S.top)++);
}
printf("\n"); // 输出后换行
}
Status StackEmpty(SqStack S) {
if(S.top == S.base)
{
return TRUE;
}else{
return FALSE;
}
}
Status Pop(SqStack &S,SElemType &e)
{
if(S.top ==S.base)
return ERROR;
e = * --S.top;
return OK;
}
void conversion() // 算法3.1
{
SqStack s; //顺序栈s
unsigned n, m; // 非负整数
SElemType e; //栈元素e
InitStack(s); // 构造空栈s
printf("请输入十进制数n(>=0) = ");
scanf("%u", &n); // 输入非负十进制整数n
printf("\n请输入需要转换到的进制: ");
scanf("%u", &m); // 输入非负十进制整数n
printf("十进制数%u的八进制数是", n);
while (n) // 只要n不等于0就循环
//从n为用户输入的十进制数开始,一直到n等于0为止
{
Push(s, n % m); // n除以8的余数(8进制的低位)入栈
//把n除以8的余数压入栈s
//先压入的余数是八进制的低位,后压入的余数是八进制的高位
n = n / m; //令n等于n整除以8的商,进入下轮循环
}
//循环结束时,n等于0
while (!StackEmpty(s)) // 只要栈s没弹空就不断循环,
//直到弹出栈底元素栈s为空为止
{
Pop(s, e); // 弹出栈顶元素且赋值给e
//依次弹出栈s的栈顶元素交给e带回
//先弹出的是八进制的高位,后弹出的是八进制的低位
printf("%d", e); // 依次输出e
}
//循环结束时,栈s为空
printf("\n");
}
int main(){
/********************** 函数声明区 **********************/
Status InitStack(SqStack &S);
Status Push(SqStack &S, SElemType e);
void OutList(SqStack S);
/********************** 函数执行区 **********************/
conversion();
return 0;
}
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
数据结构c语言进制转换八进制,C语言数据结构中数制转换实例代码相关推荐
- 数制转换c语言编程,C语言数据结构中数制转换实例代码
C语言数据结构中数制转换实例代码 数制转换是严蔚敏的数据结构那本书中的例子,但是那本书中的例子大都是用伪代码的形式写的,不是很容易理解和实现,对初学者造成了不小的困扰,在这里我们将其详尽的实现出来,以 ...
- c 语言转换成php语言,C++_C 语言进制之间的转换,二进制、八进制和十六进制向 - phpStudy...
C 语言进制之间的转换 二进制.八进制和十六进制向十进制转换都是非常容易的,就是"按权相加". 所谓"权",也即"位权".例如,十进制第1位 ...
- c 语言八进制与十进制转换,C 语言进制之间的转换
二进制.八进制和十六进制向十进制转换都是非常容易的,就是"按权相加". 所谓"权",也即"位权".例如,十进制第1位的位权为100=1,第2 ...
- Java005-二进制、八进制、十进制和十六进制之间的转换
Java005-二进制.八进制.十进制和十六进制之间的转换 一.Java中的进制转换 1)在Java中各进制的输入 (1)二进制输入,需要在开头加0B或0b,如0B1101. (2)八进制输入,需要在 ...
- 汉字转换成html,汉字与16进制、汉字与Html转义符的转换
汉字与16进制.汉字与Html转义符的转换 package test; import java.io.UnsupportedEncodingException; import java.net.URL ...
- 进制转化(c 语言实现)
部分进制转化(c 语言实现) 文章目录 二进制转化为其他进制数 十进制数转化为二进制数 一.二进制转化为其他进制数 因为我们要将二进制数转化为其他进制数,所以第一步就是要确保输入的值为二进制数. ...
- 多种进制转化 C/C++语言
多种进制转化 C/C++语言 二进制转十六进制法: C语言代码如下: #include<stdio.h> #include<string.h> int main(){int N ...
- C# 16进制与字符串、字节数组之间的转换
在串口通讯过程中,经常要用到 16进制与字符串.字节数组之间的转换 字符串转16进制字节数组 1 private static byte[] strToToHexByte(strin ...
- 将时间转换为16进制字符串或16进制小端模式byte数据
1.将String类型的时间转换 1>String类型时间转换为Date类型的时间 2>时间转换为时间戳 3>时间戳转换为16进制字符串 4>16进制字符串转换为16进制小端模 ...
最新文章
- Unbuntu18.04通过apt源方式安装mysql5.7.22
- 草履虫纳米机器人_Nature:看不见的外科医生——比头发丝还小的微型“机器人大军”正在走来...
- Spring 声明式事务处理....XML
- Python之上下文管理协议
- python2协程_python中的协程(二)
- 实现threadlocal_ThreadLocal如何实现?
- STM32H743+CubeMX-ADC+DMA采样四路AD
- C语言的数组简单复习
- MySQL安装及可视化工具使用
- IO 设备的分类与概念、IO控制器
- mysql 易语言 邮件_易语言实现163邮箱登录获取邮件列表等操作的代码
- 使用keycloak自定义SPI接入外部用户登录
- Java多线程系列--【JUC集合02】- CopyOnWriteArrayList
- 如何在html中自动生成条形图,Highcharts 柱形图(柱状图及条形图)之通过HTML表格数据创建的柱状图演示...
- 小码哥java一期 百度云_小码哥IOS 十一期
- Java 二维码及条形码处理
- Mongo客户端【Studio 3T】免费激活方式
- html app下载页功能开发
- 安卓应用程序加密,签名和发布
- pandas学习之pandas基础