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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

数据结构程序设计报告Word下载.docx

1、1需求分析课程题目:一元稀疏多项式计算器问题描述:设计一个一元多项式加法器基本要求:(1) 输入并建立多项式;(2)两个多项式相加;(3)输出多项式:n, c1, e1, c2, e2, cn , en, 其中,n是多项式项数,ci和ei分别是第 i 项的系数和指数,序列按指数降序排列。(4)计算多项式在x处的值;(5)求多项式的导函数。软件环境:Windows,UNIX,Linux等不同平台下的Visual C+ 6.0硬件环境: 512MB内存,80Gb硬盘,Pentium4 CPU,CRT显示器。2概要分析本程序有五个函数:PolyNode *Input()(输入函数);PolyNode

2、 *Deri(PolyNode *head)(求导函数);PolyNode * Plus(PolyNode *A,PolyNode *B)(求和函数);void Output(PolyNode*head)(输出函数);int main()(主函数)本程序可使用带有附加头结点的单链表来实现多项式的链表表示,每个链表结点表示多项式的一项,命名为node,它包括两个数据成员:系数coef和指数exp,他们都是公共数据成员,*next为指针域,用链表来表示多项式。适用于不定的多项式,特别是对于项数再运算过程中动态增长的多项式,不存在存储溢出的问题。其次,对于某些零系数项,在执行加法运算后不再是零系数项

3、,这就需要在结果多项式中增添新的项;对于某些非零系数项,在执行加法运算后可能是零系数项,这就需要在结果多项式中删去这些项,利用链表操作,可以简单的修改结点的指针以完成这种插入和删除运算(不像在顺序方式中那样,可能移动大量数据项)运行效率高。3详细设计和实现(1)首先介绍主函数:int main() PolyNode *head_a,*head_b; int choice; head_a=new PolyNode;head_a-next=NULL; do system(cls);/清屏函数 Output(head_a); cout _n;|-1.输入公式-|n|-2.求 导-|n|-3.两式求和

4、-|n coutchoice; if (choice=1) head_a=Input(); else if (choice=2) head_a=Deri(head_a); /求导 else if (choice=3) head_b=Input();head_a=Plus(head_a,head_b);/求和 else if (choice=4) break; else coutnext!=NULL) if(p-next-exp=0) p- /指数为零返回 else p-coef*=p-exp; /系数乘以指数exp-; /指数减一 p=p-next; return head;用于对输入的多项式

5、进行求导,求导在链表内进行计算,即运算完成链表的值改变,返回头指针。PolyNode * Plus(PolyNode *A,PolyNode *B)(求和函数): 图3.2求和函数流程图本函数用于对多项式进行加法计算,需要运用存有两个多项式的头指针,前一头指针可是前一计算的计算结果,也可是调用输入函数,后一头指针是调用输入函数输入的多项式的头接点。经过计算得到一个新的链表,函数返回链表的头指针。求和函数部分代码PolyNode * Plus(PolyNode *A,PolyNode *B)/相加 PolyNode *head,*p; head=new PolyNode; p=head; A=A

6、- B=B- while(A!=NULL|B! if(A=NULL) p-next=B; break; /如果A空,把B后面的所有接点接到p之后 if(B=NULL) p-next=A; /如果B空,把A后面的所有接点接到p之后 if(A-exp=B-exp) /如果两指数数相等,相加 if(A-coef+B-coef!=0) p-next=new PolyNode;exp=A-coef=A-coef; A=A- B=B- continue; /如果两系数互为倒数,不保存,后指,继续循环 if(A-exp B-exp) /A的指数大于B的指数 /将A的当前接点接到新链表后面,A后指exp=B-

7、coef=B- /将B的当前接点接到新链表后面,B后指 if (A=NULL&B=NULL) /如果A B 都为空 p- return head; /返回头指针(3)其他函数(同组的成员设计)#include process.husing namespace std;typedef struct node float coef; /系数 int exp; /指数 struct node *next; /指针域 指向下一个系数不为0的子项 PolyNode;PolyNode *Input() /输入函数 float c; /系数域 int e; /指数域 PolyNode *p,*q,*r,*h

8、ead;请输入多项式:形式:系数1 指数1 系数2 指数2 系数3 指数3.0 0: /建立头接点p- for (;) cince; if(c=0&e=0) break; /结束输入 if(c=0) continue; /从新输入,不保存 if(head-next=NULL) /输入第一个接点coef=c,p-exp=e; continue; p=head; while(p-=NULL & eexp) p=p- /如果输入的指数小于p的下一个接点,p向后指 if (e=p-exp) p-coef+=c;continue; /如果相等,直接加上去,继续循环 q=new PolyNode; q-c

9、oef=c,q- if (p-=NULL&eexp) /如果p的后继接点的指数小于输入的指数,插入到p的当前接点之后 r=p-next=q; q-next=r; /如果输入的值小于所有接点,接在最后一个接点之后 p=p- p-输出函数void Output(PolyNode*head) /输出 PolyNode*p; p=head- if(p=NULL) cout当前没有公式或计算结果为0,请选1输入! return; if(p!计算结果:coef while(p!+ endl;如果想重新输入公式,请选1输入!nn4调试与操作说明(1)当程序运行时,进入主界面。如图: 图4.1主界面此时输入1

10、-4选择操作(2)输入1后按回车出现: 图4.2输入主界面输入1 2 3 4 5 6 0 0后按回车之后 会出现界面: 图4.3输入后的界面(3)求导:输入2求导后按回车会出现结果: 图4.4 求导结果结果正确。(4)求和:如果进入图4.3后输入3后按回车会出现界面: 图4.5求和界面输入2 2 4 4 6 6 0 0 后结果会出来: 图4.6 求和结果此系统在得到计算结果后可以直接用计算的结果进行下一步计算,如果不想用当前的结果,也可按“1”重新输入公式进行下一步计算 总 结经过一个学期对数据结构的学习,使我对其有了很大的了解,也对C+进行了温习和了解;在课程设计期间,我们每个人都做了一个课

11、程设计,在这个过程中,遇到了不少困难,但最终还是在自己的努力和同学的帮助下完成了设计,也使我学到了不少。这个程序比较简单,在书上面有一道习题,而且有一些提示。我照着书上的结构体写下来,然后思考那三种计算因该用什么样的算法实现。前面的问题都很简单,但要操作的时候就困难了,因为有很多特殊的情况需要考虑,课程设计前后没多少时间,但是浪费了我几天的时间来想那些函数,不过还是在同学的帮助下解决了它。在求和函数中遇到了一些困难,但又在自己的努力和同学的帮助下迎刃而解。后来的程序流程图又花费了不少时间,不过总算完成了。现在才发现思维对于学习计算机的人来说是多么重要。程序设计是做完了,在做设计的过程我学到了不

12、少,使我对数据结构的认识有上升到了一个新的高度,使我对自己所学的专业有了新的认识,对自己的定位也清楚了,对自己以后该怎样学,学什么有了新的目标。致 谢一个礼拜的课程设计圆满结束了,在这次课程设计的过中我得到了许多人的帮助。首先我要感谢我计算机工程系给了我这次机会,给我们这么好的实验室,让我有个机会提高自己的综合能力。其次我要感谢我的课程设计指导老师在课程设计上给予我的指导、提供给我的支持和帮助,这是我能顺利完成这次报告的主要原因,更重要的是老师帮我解决了许多技术上的难题,让我能把系统做得更加完善。在此期间,我不仅学到了许多新的知识,而且也开阔了视野,提高了自己的设计能力,更加让我知道了自己的不

13、足之处,让我今后的学习有了目标。其次,我要感谢帮助过我的同学,他们也为我解决了不少我不太明白的设计上的难题。在这里还要感谢我的小组队长,他给我的帮助最多。最后要感谢互联网上的朋友们,谢谢你们无私的提供学习资料最后再一次诚恳的感谢所有帮助我的人,谢谢你们!参 考 文 献1殷人昆.数据结构用面向对象的方法与C+语言描述.第二版,北京:清华大学出版社,20082张红霞.数据结构教程与实训.北京:北京理工大学出版社,20063揣锦华.面向对象程序设计与VC+实践.西安电子科技大学出版社,20064吴乃陵,况迎辉.C+程序设计.北京:高等教育出版社,20035金远平.数据结构C+描述.北京:清华大学出版

14、社,2005设计任务书课题名称设计目的本课程设计的目的是通过实践使学生经历一个数据结构开发的全过程并受到一次综合的训练,以便能较全面地理解、掌握和综合运用所学的知识去分析、解决实际问题。实验环境任务要求设计一个一元多项式加法器。【基本要求】(1)输入并建立多项式;n, c1, e1, c2, e2, cn , en, 其中,n是多项式项数,ci和ei分别是第 i 项的系数和指数,序列按指数降序排列。工作进度计划序号起止日期工 作 内 容12009.6.82009.6.8需求分析22009.6.92009.6.9概念设计32009.6.102009.6.10调试和操作42009.6.102009

15、.6.11课程设计报告纂写指导教师(签章): 年 月 日 指导教师评语学号1071304134姓名张鑫班级网络1071选题评价内容权重(%)得分考勤记录、学习态度、工作作风与表现。5自学情况:上网检索机时数、文献阅读情况(笔记)。10论文选题是否先进,是否具有前沿性或前瞻性。成果验收:是否完成设计任务;能否运行、可操作性如何等。20报告的格式规范程度、是否图文并茂、语言规范及流畅程度;主题是否鲜明、重心是否突出、论述是否充分、结论是否正确;是否提出了自己的独到见解。306文献引用是否合理、充分、真实。7答辩情况: 自我陈述、回答问题的正确性、用语准确性、逻辑思维、是否具有独到见解等。25合计 2009 年 月 日

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2