长整数的运算算法与数据结构课程设计报告书
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
*******************
实践教学
*******************
兰州理工大学
软件学院
2013年春季学期
算法与数据结构课程设计
题目:长整数的运算
专业班级:软件二班
姓名:齐祥荣
学号:
指导教师:王连相
成绩:
目录
摘要 (1)
前言 (2)
正文 (3)
1.采用类C语言定义相关的数据类型 (3)
2.各模块的伪码算法 (3)
3.函数的调用关系图 (6)
4.调试分析 (7)
5.测试结果 (7)
6.源程序(带注释) (8)
总结 (15)
参考文献 (16)
致谢 (17)
附件Ⅰ部分源程序代码 (18)
摘要
数据结构
该设计要求学生设计程序,实现两个任意长的整数求和及差的运算问题。通过该题目的设计过程,可以加深理解线性表的逻辑结构、存储结构,掌握线性表上基本运算的实现,进一步理解和熟练掌握课本中所学的各种数据结构,学会如何把学到的知识用于解决实际问题,培养学生的动手能力
关键词:双循环链表;插入;删除;长整数加减
前言
利用双向循环链表来实现对长整数的存储。每个节点只存储四位十进制数字,即不超过9999的非负整数。双向链表有头指针,它的data值存储长整数的符号,1为正,-1为负,0代表长整数为0;它的over值存储除头节点外节点的个数。其他节点的data值存储四位整数,over存储该四位整数溢出0~~9999范围的情况,一般over>0表示四位数超出9999,over<0表示四位数小于0。
选择该数据结构来完成长整数的加减运算是因为要对长整数进行运算,需要对长整数进行存储,所以选择用链表对长整数存储,又由于存储的顺序是从左到右,而运算的顺序则是从右到左,这样位了操作方便选择循环链表,在运算过程中有进位和借位的操作,所以最终选择双向循环链表的数据结构。
正文
1.采用类c语言定义相关的数据类型
typedef struct DoubleNode 定义及链表定义:
#define N 100
typedef int DataType;
typedef struct DoubleNode 入函数设计思路:
int InsertNode(DLNode *head,int n,DataType x) 法函数设计思路:
先将各位做加减,然后根据所得长整数正负和各结点data值进位或退位计算所得长整数的值并输出。
void add(DLNode *h1,DLNode *h2) 法函数设计思路:
void jian(DLNode *h1,DLNode *h2)
数据结构(C语言版)》.清华大学出版社.
2 严蔚敏,吴伟民.《数据结构题集(C语言版)》.清华大学出版社.
3 《DATA STRUCTURE WITH C++》. William Ford,William Topp .清华
大学出版社(影印版).
4 谭浩强.《c语言程序设计》. 清华大学出版社.
5.数据结构与算法分析(Java版) , A Practical Introduction to Data Structures and Algorithm Analysis Java Edition Clifford A. Shaffer , 张铭,刘晓丹译?电子工业出版社 2001 年1月
致谢
首先,我要感谢我的《算法与数据结构》及课程设计老师王连相老师,谢谢王老师对我的谆谆教导,让我懂得了《算法与数据结构》的理论知识,为我做课程设计奠定了理论基础。另外,感谢王老师在我做课程设计的过程中给我提出的宝贵意见和建议,我根据王老师的建议对我的程序进行了改进,从而使程序更加完善。最后我还要感谢,在课设的这两周给我帮助的同学们,谢谢他们给我鼓励和支持。
附件Ⅰ部分源程序代码
定义链表;
typedef int DataType;
typedef struct DoubleNode //定义链表元素 { DataType data;
struct DoubleNode *prior;
struct DoubleNode *next; }DLNode;
void InitNode(DLNode **head) //初始化链表 {
循环结构:
while(p!=head&&i { p=p->next; i++; } if(i!=n) { printf("插入位置错误\n"); return 0; }