长整数加减运算实验报告.doc

长整数加减运算实验报告.doc

ID:50406494

大小:283.50 KB

页数:29页

时间:2020-03-05

长整数加减运算实验报告.doc_第1页
长整数加减运算实验报告.doc_第2页
长整数加减运算实验报告.doc_第3页
长整数加减运算实验报告.doc_第4页
长整数加减运算实验报告.doc_第5页
资源描述:

《长整数加减运算实验报告.doc》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、长整数加减的运算一、需求分析问题描述:设计一个实现任意长的整数进行加法运算的演示程序基本要求:利用双向循环链表实现长整数的存储,每个结点含一个整型变量。任何整型变量的范围是-(215-1)~(215-1)。输入输出形式:按照中国对于长整数的表示习惯,每四位是一组,组间用逗号隔开更高要求:(1)长整数的减法(2)多个长整数的连续加减法,并带括号等。具体方式可以参见表达式的求值部分,利用栈测试数据:(1)0;0;应输出“0”(2)-2345,6789;-7654,3211;应输出“-1,0000,0000”(

2、3)-9999,9999;1,0000,0000,0000;应输出“9999,0000,0001”(4)1,0001,0001;-1,0001,0001;应输出“0”(5)1,0001,0001;-1,0001,0000;应输出“1”(6)-9999,9999,9999;-9999,9999,9999;应输出“-1,9999,9999,9998”(7)1,0000,9999,9999;1;应输出“1,0001,0000,0000”一、概要设计1.数据结构此实验采用的数据结构是双向循环链表。这样可以很容易的

3、找到他的前驱以及它的后继。节点采用结构体类型,代码如下:typedefstructNode//双向链表的结构体定义{intdata;structNode*prior;structNode*next;}DLNode;2.使用函数1)voidListInitiate(DLNode**head)操作结果:初始化一个头结点为head的双向循环链表;2)intListLength(DLNode*head)操作结果:计算以head为头结点的链表的长度3)intListInsert(DLNode*head,inti,i

4、ntx)操作结果:将节点数据为x的节点插到第i个位置上去。4)intabs(intx)操作结果:绝对值函数,返回x的绝对值。5)intInputNumber(DLNode*head)操作结果:将从键盘中接收数据并把得到的数据存入以head为头结点的链表中。四位一存,中间以逗号区分,结束符为分号。6)voidOutputNumber(DLNode*head,intsign)操作结果:将以head为头结点的链表中的所有数据输出到显示屏上,7)voidadd(DLNode*head1,DLNode*head2,

5、DLNode*head3)操作结果:实现正数加正数的加法操作。8)intchange(DLNode*head1,DLNode*head2)操作结果:判断存在俩个链表中的数的大小,如何head1中的数大于head2中的数那么返回值为0,反之返回值为1,相等时返回值为2;1)voidmethod(DLNode*head1,DLNode*head2,intx)操作结果:计算正数乘以正数的乘法运算。2)voidminus(DLNode*head1,DLNode*head2,DLNode*head3)操作结果:计算

6、正数减正数的减法运算。3)voidyunsuan(DLNode*head1,DLNode*head2,DLNode*head3,charch)操作结果:正数,负数,加法,减法。计算式共分为八种运算,在这之前我已经实现了二种运算,那么这个函数就是把这八种运算按照一定的规则转化成已经实现的二种运算来实现完整的加减法运算。4)voidchengfa(DLNode*head1,DLNode*head2)操作结果:在乘法中我只是实现了正数乘以正数的运算,那么这个函数就是通过调用method函数按照一定的规则来实现完

7、整的乘法运算。5)voidmain()操作结果:主函数。调用以上的各个函数来引导用户进行长整数的加法运算,加法运算,乘法运算。一、详细设计1.数据结构详细设计typedefstructNode//双向链表的结构体定义{intdata;structNode*prior;structNode*next;}DLNode;双向循环链表的节点由三个部分组成,第一是数据部分data存储此节点的数据,第二是此节点的前驱指针部分*prior指向此节点的前驱,第三是此节点的后继指针部分*next指向此节点的后继。数据部分我

8、们约定它为整形变量,前驱后继指针均为结构体Node类型。2.链表初始化函数:voidListInitiate(DLNode**head)//双向链表的初始化{if((*head=(DLNode*)malloc(sizeof(DLNode)))==NULL)exit(0);(*head)->prior=*head;(*head)->next=*head;}初始化之前需要定义一个类型为Node型的头结点变量,经过函数后完成链表的初

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

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

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