数据结构课程设计之数制转换问题
数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。一般认为,一个数据结构是由数据元素依据某种逻辑联系组织起来的。对数据元素间逻辑关系的描述称为数据的逻辑结构;数据必须在计算机内存储,数据的存储结构是数据结构的实现形式,是其在计算机内的表示;此外讨论一个数据结构必须同时讨论在该类数据上执行的运算才有意义。
在许多类型的程序的设计中,数据结构的选择是一个基本的设计考虑因素。许多大型系统的构造经验表明,系统实现的困难程度和系统构造的质量都严重的依赖于是否选择了最优的数据结构。许多时候,确定了数据结构后,算法就容易得到了。有些时候事情也会反过来,我们根据特定算法来选择数据结构与之适应。不论哪种情况,选择合适的数据结构都是非常重要的。
本课程设计主要使用不同的数据结构解决数制转换的问题。在课程设计中,系统开发平台为 Windows7,程序设计语言采用 C 语言,程序运行平台为 Windows98/2000/XP/7。
数制转换是计算机科学中一个重要的概念。计算机使用的是二进制,人类在日常生活中使用十进制,但是在一些特定场合使用其他进制的表示,所以需要进行不同进制之间的转换。本课程设计主要解决不同的进制之间的转换问题,并且采用不同的数据结构进行存储和转换,实现普通的进制之间的转换。
在程序设计中,可以用使用很多种方法解决该问题。例如:数组、栈、递归。不同的方法实现转换的原理基本相同,只是代码的细节不同。在我的程序中不同的方法所需的函数在一个单独的头文件里面,便以管理和修改。
数据结构设计中,数组的结构由于处理简单的情况,最大的数字将不大于整形的范围,在 VS2008 整形为 4 个字节,因此开辟的数组为 33 个元素。栈的结构首先定义了一个结构体,结构体中包含栈元素的首地址、栈顶位置、栈顶位置、栈的最大范围。栈元素的存储空间在程序中再动态开辟。和上面一样,栈的最大为 33。递归的结构递归不需要自己定义存储空间。
算法说明中,数组的算法M 进制转十进制:从该 M 进制数的最后一位开始算,依次列为第 0、1、2...n 位并分别乘以 M 的 0、1、2...n 次方,将得到的次方相加便得到对应的十进制数。由于输入的 M 进制的数可能出现字符,所以使用了字符数组进行存储。并在输入后将字符全部转换为数字,并存储到全局变量 s 数组里面,每个数组元素存储一位。
十进制转换为其他进制:首先取 x 对需要转换的进制 n 取余,然后再对其取整,将取到的余数存入数组中,然后重复上面的步骤,将得到的余数依次存入数组中,知道 x 变成0。然后将数组反向输出。输出的数可能大于 10,所以进行了必要的判断。
栈的算法result = 0; i = 0i 小于 M 进制的字符长度取出数组元素 s[i] 与 M 的 i次方 相乘,相乘结果加入result 中, i 自加 1 。Y函数结束N初始化数组元素位置 i=0;x>0?Yx 除以 n ,余数存入数组,数组下标 i 后移,商赋值给 x函数结束N
递归的算法递归过程中不需要另外的存储取到的余数,只需要在递归返回时输出相应的结果就行。
主要变量#define MAX 0x7fffffff 定义了整形数的最大值,防止数字溢出。
在课程设计中,我们学习了数据结构的重要性和数制转换的实现方法。在实际应用中,我们可以根据不同的需求选择合适的数据结构和算法,提高程序的效率和可读性。