数据结构课程设计报告doc

数据结构课程设计报告doc

ID:46925483

大小:100.00 KB

页数:6页

时间:2019-11-30

数据结构课程设计报告doc_第1页
数据结构课程设计报告doc_第2页
数据结构课程设计报告doc_第3页
数据结构课程设计报告doc_第4页
数据结构课程设计报告doc_第5页
资源描述:

《数据结构课程设计报告doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、数据结构课程设计报告时间:2003年12月姓名:叶焕青学号:200250001055一.任意长整数的加减运算(1)要求:利用双循环链表实现长整数的存储。每个节点一位数字,头节点存储正负号。(2)源程序、目标程序在磁盘中的路径、名称:A:JISUANQI.C   A:JISUANQI.EXE(3)问题描述:1.首先需要建立一个接收和建立函数,接收从键盘输入的一个欲求的式子,将其链接成双循环链表。2.建立独立的加法,减法函数。3.建立一个可以混合调用加、减法的计算函数。函数返回值为结果的双循环链表的头指针。4.设计输出

2、函数,把结果的双循环链表输出。(4)数据结构描述:1.类型描述:typedefstructpnode{chardata;structpnode*prior,*next;}polynode;polynode*head[100];双循环链表中的节点类型为polynode.其中data部分放char类型的一位数字(头节点放正负号)。另加上前趋指针域和后继指针域。每一个数连同其前面的符号链接成一个链表。每个数的链表的首地址存于全局变量polynode*head[100]中。则该系统能完成100个数以内的加减混合运算。2.图例描

3、述:(见下页)(5)函数说明:开始:voidbegin()开始界面,提示输入信息建立:voidcreat()把输入的式子联成若干个链表,每个数(包括符号)为一个链表。全局变量head[]中存这些链表的头指针。加法:polynode*noequal(polynode*rear,polynode*rear3,polynode*c,intx)专门处理当数a+b时a与b位数不同的情况。参数为位数多的数的当前指针polynode*rear,结果数组的当前指针polynode*rear3,位数多的数的头指针polynode*c和记

4、录进位的数intx。返回处理后的结果的头指针。polynode*add(polynode*a,polynode*b,charsign)处理a+b,参数为两个被加数的头指针,和结果的符号(由cal2函数判断)。返回结果的头指针。add函数调用noeqal函数实现加法功能。减法:polynode*compare(polynode*a,polynode*b)比较a和b两个数哪个的绝对大。返回大的数的头指针。polynode*mine(polynode*a,polynode*b)计算a的绝对值减b的绝对值的值,其中参数a的绝对

5、值比b的绝对值大。返回结果的头指针。polynode*miners(polynode*a,polynode*b)计算a-b的值,返回结果的头指针。miners调用mine再调用compare函数实现减法功能。计算:polynode*cal1(polynode*a,polynode*b)计算a与b运算的结果,返回结果的头指针。polynode*cal2()实现多个数的混合运算的函数,返回结果的头指针。cal2调用cal1再调用加减法函数实现多个数混合运算的功能。输出:voidoutput(polynode*c)输出结果。

6、图例显示:(例如式子为-789+102+536=)(6)主要算法描述:1.计算:polynode*cal1(polynode*a,polynode*b){polynode*c;if(a>0且b>0)c=a+b;if(a<0且b<0)c=-(a+b);if(a>0且b<0)c=a-b;if(a<0且b>0)c=b-areturn(c);}2.减法(a-b):polynode*miners(polynode*a,polynode*b){polynode*p,*c;p=(a,b)中绝对值大的那个;(由compare函数得到)

7、if(a的绝对值大){c=a-b}(由mine函数得到)if(b的绝对值大){c=-(b-a)}(由mine函数得到)return(c);}减法(绝对值大的减绝对值小的):polynode*mine(polynode*a,polynode*b){polynode*p,*ptr,*rear1,*rear2,*rear3;退位x=0;rear1=a;rear2=b;rear3=malloc(sizeof(polynode));ptr=结果头指针;rear1前移一位,指向链表a的个位;rear2前移一位,指向链表b的个位;当

8、(a,b均没有处理完){rear3->prior=malloc(sizeof(polynode));rear3自己形成双循环链表;if(a的该位-退位>=b的该位){rear3->data=(rear1->data-rear2->data-x);x=0;}else{rear3->data=(rear1->data+10-rear2

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。