数据结构实践——数制转换(栈)
2015-09-20 07:05
204 查看
本文是针对数据结构基础系列网络课程(3):栈和队列的实现项目。
【项目 - 数制转换】 把十进制的整数转换为任一进制数输出。请利用栈设计算法,并实现程序。
提示:要转换为r进制,则原来的数逐次除以基数r(除完之后用商再除),直到商为0,得到的一系列余数的逆序就是转换结果。这里的“逆序”,意味着后产生的余数,会先输出,后进先出,栈的机会来了……
[参考解答]
解法:头文件sqstack.h请见[顺序栈算法库],使用链栈也可以。
注:为实现本项目苈能,请将sqstack.h中的ElemType由char改为int,即
改为:
【项目 - 数制转换】 把十进制的整数转换为任一进制数输出。请利用栈设计算法,并实现程序。
提示:要转换为r进制,则原来的数逐次除以基数r(除完之后用商再除),直到商为0,得到的一系列余数的逆序就是转换结果。这里的“逆序”,意味着后产生的余数,会先输出,后进先出,栈的机会来了……
[参考解答]
解法:头文件sqstack.h请见[顺序栈算法库],使用链栈也可以。
#include <stdio.h> #include "sqstack.h" void MultiBaseOutput (int number,int base) { //假设number是非负的十进制整数,输出等值的base进制数 int i; SqStack *S; InitStack(S); while(number) //从右向左产生base进制的各位数字,并将其进栈 { Push(S,number%base); //将将余数进栈 number/=base; } while(!StackEmpty(S)) //栈非空时退栈输出 { Pop(S, i); printf("%d",i); } } int main() { MultiBaseOutput(10, 2); return 0; }
注:为实现本项目苈能,请将sqstack.h中的ElemType由char改为int,即
typedef char ElemType;
改为:
typedef int ElemType;
相关文章推荐
- 二叉树的实现
- Java数据结构与算法之数组(二)
- 数据结构实践——括号的匹配(栈)
- 数据结构面试题1.2.8-判断整数序列是不是二元查找树的后序遍历结果
- 研磨数据结构与算法-05双端链表与双向链表
- 单层感知器、线性神经网络、几种数据结构算法的学习报告
- 数据结构之链表
- 11991 - Easy Problem from Rujia Liu?(抽象数据结构)
- 【R in action】学习笔记——第二章:数据结构
- 基础数据结构--线性表链式实现
- 基础数据结构--线性表实现
- 研磨数据结构与算法-04链表
- 三维CAD塑造——基于所述基本数据结构一半欧拉操作模型
- 研磨数据结构与算法-03栈与队列
- 图的历遍-深度优先历遍、广度优先历遍
- 数据结构(二):哈夫曼树
- 最小值
- 数据结构之自建算法库——顺序串
- Android开发中高效的数据结构用SparseArray代替HashMap
- 数据结构之自建算法库——链串