数据结构长整数的加法课程设计

数据结构长整数的加法课程设计

ID:14662407

大小:139.50 KB

页数:16页

时间:2018-07-29

数据结构长整数的加法课程设计_第1页
数据结构长整数的加法课程设计_第2页
数据结构长整数的加法课程设计_第3页
数据结构长整数的加法课程设计_第4页
数据结构长整数的加法课程设计_第5页
资源描述:

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

1、目录1绪论22需求分析33数据结构及详细设计43.1线性表的数据结构43.2详细设计54程序的调试与结果105课设小结156参考文献16161绪论此次的课程设计内容为数据结构长整数加法的实现,整个程序是为了实现长整数的加法,有5个函数,其中主函数,输入、输出函数已经占了3个,只有执行加法的add函数,和测试用的text函数的算法比较复杂容易出错。利用本程序可以实现长整数加法的计算。162需求分析1.因为要实现任意长的整数进行加法运算,本程序使用C语言的整型变量int存放数据,一个int型的变量值的范围为-32768~32

2、767,显然远远不能满足。因此利用双向循环链表实现长整数的存储,每个结点存放一个整型变量,且只存10进制数的4位,即不超过9999的非负整数,整个链表表示为万进制数。表头数据域的符号代替长整数的符号。相加过程不破坏两个操作数链表。长整数位数没有上限。2.演示程序以用户和计算机的对话方式执行,在计算机终端上显示提示信息之后,由用户在键盘上输入演示程序中规定的运算命令,相应的输入数据和运算结果显示在后。3.程序执行的命令包括:1)构造链表1存放第一个输入数据2)构造链表2存放第二个输入数据3)求两数之和4)结束4.测试数据⑴

3、0;0;应输出0⑵-2345,6789;-7654,3211;应输出-1,0000,0000⑶-9999,9999;1,0000,0000,0000;应输出9999,0000,0001⑷1,0001,0001;-1,0001,0001;应输出0⑸1,0001,0001;-1,0001,0000;应输出1⑹-9999,9999,9999;-9999,9999,9999;应输出-1,9999,9999,9998⑺1,0000,9999,9999;1;应输出1,0001,0000,0000163数据结构及详细设计3.1线性表的

4、数据结构ADTLixt{数据对象:D={ai∣ai∈ElemSet,i=1,2,…,n,n≥0}数据关系:R1={∣ai-1,ai∈D,i=2,…,n}基本操作:InitList(&L)操作结果:构造一个空的线性表DestroyList(&)初始条件:线性表L已存在操作结果:销毁线性表LClearList(L)初始条件:线性表L已存在操作结果:将L重置为空表ListEmpty(L)初始条件:线性表L已存在操作结果:若L为空表,则返回TRUE,否则返回FALSEListLength(L)初始条件:线性表L

5、已存在操作结果:返回L中数据元素个数GetElem(L,i.&e)初始条件:线性表L已存在,1≤i≤ListLength(L)操作结果:用e返回L中第i个数据元素的值ListInsert(&L,I,e)初始条件:线性表L已存在,1≤i≤ListLength(L)+1操作结果:在L中第i个位置插入新的数据元素e,L的长度加1ListDelete(&L,I,&e)初始条件:线性表L已存在,且非空,1≤i≤ListLength(L)16操作结果:删除L的第i个元素,并且用e返回其值,L的长度减1}ADTList3.2详细设计1

6、.节点的定义:typedefstructnode{intdata;structnode*pre;structnode*next;}DataNode;2.对于程序中数据的输入以及对输入数据检测,主要利用for和while循环语句对输入的数据进行检测和判断:DataNode*Input(){charch[50];DataNode*temp,*node;intcount=0,count1=0,i,j,n,sum=0;scanf("%s",ch);while(ch[count++]!='');count--;node=(Da

7、taNode*)malloc(sizeof(DataNode));temp=node;count1++;if(ch[0]=='-'

8、

9、ch[0]=='+'){if((count-1)%2)count1+=(count-1)/2+1;16elsecount1+=(count-1)/2;}else{if(count%2)count1+=count/2+1;elsecount1+=count/2;}count--;for(i=1;ipre=(DataNode*)malloc(sizeof(

10、DataNode));temp->pre->next=temp;temp=temp->pre;temp->data=0;for(j=0;j<2&&ch[count]!='-'&&ch[count]!='+';j++){if(count<0)break;sum=ch[count--]-'0';for(n=0;n

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

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

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