ImageVerifierCode 换一换
格式:DOCX , 页数:9 ,大小:93.18KB ,
资源ID:8180055      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/8180055.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(数据结构实验一.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

数据结构实验一.docx

1、数据结构实验一 数据结构与算法实验报告实验题目: 大整数加法 班 级: 信息与计算科学141 姓 名: xx 学 号: 141021xx 完成日期: 2014.11.03 一、需求分析1、实验任务是利用线性表的链式存储及其相应操作对两个非负整数(位数可能超过整数类型数据存储的范围)进行相加,求出结果。2、输入的形式和输入值的范围:输入的形式为字符,输入值的范围为整数。3、输出的形式:整型 。4、程序功能:实现任意位数的两个整数相加。5、测试数据:第一组666666666666666666666666222第二组123456789876543219876543212345678987654321

2、第三组133*333333333333333333333333333332555555555555555555555555555555555555555二、概要设计1、数据类型储存整数的单链表中的结点结构可以是:typedef struct lineint data;struct line *next;list,*linklist;2、算法思想(1)输入两个正确的整数,由于输入整数位数可能超过整数数据类型可以存储的范围,所以要用字符数组的数据类型来接受输入的两个整数。考虑到每个长整型数的长度在输入之间是无法预知的,因此使用链表在存储空间的分配上更方便一些。(2)对于存储在字符数组里的整数,可以

3、根据字符数组中从高位到低位的数值位,用前插法建立单链表的方法,将整数存储于带头结点的单链表中每个结点存放一位数字,这时,从单链表的第一个结点到尾结点依次是从个位到最高位的整数,以便相加运算。(3)对两个单链表依次扫描到尾结点,将尾结点的数值及前面相加留下的进位相加,把和的个位存储到长度长的单链表对应的结点中,同时记录进位,然后把可能有的进位依次与长单链表还未相加过的结点依次相加,若到最后一个结点相加后仍有进位,则要新增加一个结点,以存放进位。这样两个整数的和已经存储在原来长的单链表中了。(4)在主函数中要设置相关的数据结构,以存放两个整数和单链表,输入两个整数后,依次可调用输入整数,存储链表模

4、块、链表输出模块、整数相加模块。3、各子模块(1)输入整数,存入链表模块该模块根据字符数组从高位到低位的数值位,用前插法建立单链表。(2)链表输出模块输出链表使得从第一个结点到尾结点依次是从个位到最高位的整数,这样便可以进行相加。(3)整数相加模块对两个单链表依次扫描到尾结点,将尾结点的数值及前面相加留下的进位相加,把和的个位存储到长度长的单链表对应的结点中,同时记录进位,然后把可能有的进位依次与长单链表还未相加过的结点依次相加,若到最后一个结点相加后仍有进位,则要新增加一个结点,以存放进位。这样两个整数的和已经存储在原来长的单链表中了。4、主模块及与子模块的调用关系(1)主模块设置数据类型的

5、结构体数组和有关变量,然后依次调用输入整数,存储链表模块、输出链表模块和、整数相加模块。(2)各模块之间的调用关系 三、详细设计1、数据结构typedef struct lineint data;struct line *next;list,*linklist;2、输入整数,存入链表void initList(linklist &l)/输入整数,存入链表char c;linklist p;l=(linklist)malloc(sizeof(list);l-next=0;while(c=getchar()!=n) p=(linklist)malloc(sizeof(list); p-data=c

6、-48; p-next=l-next; l-next=p;3、输出单链表中的元素值void print(linklist l)/输出链表l=l-next; while(l!=0) printf(%d,l-data); l=l-next;4、整数相加void add(linklist &l,linklist l1,linklist l2)/求和 int a,b=0; linklist p; l1=l1-next; l2=l2-next; l=(linklist)malloc(sizeof(list); l-next=0; while(l1!=0&l2!=0) a=l1-data+l2-data+

7、b; l1=l1-next; l2=l2-next; b=a/10; a=a%10; p=(linklist)malloc(sizeof(list); p-data=a; p-next=l-next; l-next=p; if(!l1&!l2) if(b=1) p=(linklist)malloc(sizeof(list); p-data=1; p-next=l-next; l-next=p; if(l1) while(l1!=0) a=l1-data+b; l1=l1-next; b=a/10; a=a%10; p=(linklist)malloc(sizeof(list); p-data=

8、a; p-next=l-next; l-next=p; if(b=1) p=(linklist)malloc(sizeof(list); p-data=1; p-next=l-next; l-next=p; if(l2) while(l2!=0) a=l2-data+b; l2=l2-next; b=a/10; a=a%10; p=(linklist)malloc(sizeof(list); p-data=a; p-next=l-next; l-next=p; if(b=1) p=(linklist)malloc(sizeof(list); p-data=1; p-next=l-next; l

9、-next=p; 5、主程序模块void main() linklist l1,l2,l3; while(cout请输入第一个数) coutendl; initList(l1); printf(请输入第二个整数:n); initList(l2); printf(两个整数的和是:n); add(l3,l1,l2);/求和 print(l3); getchar(); printf(n); 四、调试分析1、遇到的问题:对于将整数存入两个链表后,如何在链表中计算求和的处理方法不了解。经过多方查询还有和同学沟通将其解决,办法是定义一个新的链表,将两个链表的和存入新链表中。2、对设计和实现回顾:对于两个位

10、数可能超过整数数据类型可以存储范围数的加法运算,首先我对数据的输入进行分析,对于这样的数据可以采用字符串或字符数组进行存储,我选择用字符数组,这样我解决了输入问题。实验的目的是输出两个大正数的和,这我们就要用到单链表先将存储在字符数组中的数存储于单链表中,对于单链表的操作我们必须熟练掌握。运用单链表将整数输入输出后,得到从第一个结点到尾结点依次是从个位到最高位的整数,这样便可以进行相加。新的问题出现,如何相加?我采用定义一个新链表,将两个链表的和存入新链表中来实现和的输出。3、经验和不足:(1)在还没有想清楚的时候就急于编写代码,以至于写的程序无法运行,所用到的运算法则不对。(2)开始写程序时

11、源程序没有严格按单元模块结构编写,可读性较差。(3)由于初次进行系统的程序设计,层次结构划分不太合理,应在以后的设计中强化此思维,逐渐与工程设计接轨。五、测试结果输入:666666666666666666666666222输出:666666666666666666666888输入:123456789876543219876543212345678987654321输出:9876543224691357975308642输入:133*333333333333333333333333333332555555555555555555555555555555555555555输出:3888888888888888888888888888888888888888测试通过。 六、实验成绩(教师填写) 教师签名:

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1