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语言数据结构中数制转换实例代码相关推荐

  1. 数制转换c语言编程,C语言数据结构中数制转换实例代码

    C语言数据结构中数制转换实例代码 数制转换是严蔚敏的数据结构那本书中的例子,但是那本书中的例子大都是用伪代码的形式写的,不是很容易理解和实现,对初学者造成了不小的困扰,在这里我们将其详尽的实现出来,以 ...

  2. c 语言转换成php语言,C++_C 语言进制之间的转换,二进制、八进制和十六进制向 - phpStudy...

    C 语言进制之间的转换 二进制.八进制和十六进制向十进制转换都是非常容易的,就是"按权相加". 所谓"权",也即"位权".例如,十进制第1位 ...

  3. c 语言八进制与十进制转换,C 语言进制之间的转换

    二进制.八进制和十六进制向十进制转换都是非常容易的,就是"按权相加". 所谓"权",也即"位权".例如,十进制第1位的位权为100=1,第2 ...

  4. Java005-二进制、八进制、十进制和十六进制之间的转换

    Java005-二进制.八进制.十进制和十六进制之间的转换 一.Java中的进制转换 1)在Java中各进制的输入 (1)二进制输入,需要在开头加0B或0b,如0B1101. (2)八进制输入,需要在 ...

  5. 汉字转换成html,汉字与16进制、汉字与Html转义符的转换

    汉字与16进制.汉字与Html转义符的转换 package test; import java.io.UnsupportedEncodingException; import java.net.URL ...

  6. 进制转化(c 语言实现)

    部分进制转化(c 语言实现) 文章目录 二进制转化为其他进制数 十进制数转化为二进制数   一.二进制转化为其他进制数 因为我们要将二进制数转化为其他进制数,所以第一步就是要确保输入的值为二进制数. ...

  7. 多种进制转化 C/C++语言

    多种进制转化 C/C++语言 二进制转十六进制法: C语言代码如下: #include<stdio.h> #include<string.h> int main(){int N ...

  8. C# 16进制与字符串、字节数组之间的转换

    在串口通讯过程中,经常要用到 16进制与字符串.字节数组之间的转换 字符串转16进制字节数组  1         private static byte[] strToToHexByte(strin ...

  9. 将时间转换为16进制字符串或16进制小端模式byte数据

    1.将String类型的时间转换 1>String类型时间转换为Date类型的时间 2>时间转换为时间戳 3>时间戳转换为16进制字符串 4>16进制字符串转换为16进制小端模 ...

最新文章

  1. Unbuntu18.04通过apt源方式安装mysql5.7.22
  2. 草履虫纳米机器人_Nature:看不见的外科医生——比头发丝还小的微型“机器人大军”正在走来...
  3. Spring 声明式事务处理....XML
  4. Python之上下文管理协议
  5. python2协程_python中的协程(二)
  6. 实现threadlocal_ThreadLocal如何实现?
  7. STM32H743+CubeMX-ADC+DMA采样四路AD
  8. C语言的数组简单复习
  9. MySQL安装及可视化工具使用
  10. IO 设备的分类与概念、IO控制器
  11. mysql 易语言 邮件_易语言实现163邮箱登录获取邮件列表等操作的代码
  12. 使用keycloak自定义SPI接入外部用户登录
  13. Java多线程系列--【JUC集合02】- CopyOnWriteArrayList
  14. 如何在html中自动生成条形图,Highcharts 柱形图(柱状图及条形图)之通过HTML表格数据创建的柱状图演示...
  15. 小码哥java一期 百度云_小码哥IOS 十一期
  16. Java 二维码及条形码处理
  17. Mongo客户端【Studio 3T】免费激活方式
  18. html app下载页功能开发
  19. 安卓应用程序加密,签名和发布
  20. pandas学习之pandas基础

热门文章

  1. Proteus电路图绘制与CubeMX生成框架下填充Keil 5代码的联调仿真
  2. 字典的基础及字典的使用实例
  3. 微信小程序解密过程(java)
  4. 【读书笔记】【More Effective C++】异常(Exceptions)
  5. 2007年9月13日
  6. iOS中 扫描二维码/生成二维码详解
  7. 数据库中的常见关键字的用法
  8. 2022年SCI期刊最新影响因子正式发布
  9. OpenDRIVE文件格式详解
  10. 服务器ssh升级导致的java程序ssh连接失败