下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、武汉理工大学华夏学院课程设计报告书课程名称:数据结构与算法分析题 目:用 c 语言实现一兀多项式的加减法运算系名:_信息工程系专业班级:物联网工程 1122 班姓名:隋明超学号:指导教师:司晓梅2014年1月_3_日武汉理工大学华夏学院信息工程系课程设计任务书课程名称:数据结构与算法分析指导教师:司晓梅班级名称:物联网1121-2开课系、教研室:信息系计算机一、 课程设计目的与任务数据结构课程设计是为训练学生的数据组织能力和提高程序设计能力而设置的增强实践能力 的课程。目的:学习数据结构课程,旨在使学生学会分析研究数据对象的特性,学会数据的组织方法,以便选择合适的数据的逻辑结构和存储结构以及相
2、应操作,把现实世界中的问题转换为计算机内部的表示和处理,这就是一个良好的程序设计技能训练的过程。提高学生的程序设计能力、掌握基本知识、基本技能,提高算法设计质量与程序设计素质的培养就是本门课程的课程设计的 目的。任务:根据题目要求,完成算法设计与程序实现,并按规定写岀课程设计报告。二、 课程设计的内容与基本要求设计题目:用C语言实现一元多项式的加减法计算问题描述输入并建立两个多项式并输出多项式设计一个程序:对两个多项式进行加、减法运算,建立一个新多项式并输出。实现提示:选择单链表存储多项式具体要完成的任务是:A.编制完成上述问题的C语言程序、进行程序调试并能得岀正确的运行结果。B.写岀规范的课
3、程设计报告书;三、 课程设计步骤及时间进度和场地安排时间:本课程设计安排在第18周 地点:现代教育中心具体时间安排如下:第一天:布置题目,确定任务、查找相关资料第二天第四天:功能分析,编写程序,调试程序、运行系统;第五天上午:撰写设计报告; 第五天下午:程序验收、答辩。四、 课程设计考核及评分标准课程设计考核将综合考虑学生的系统设计方案、运行结果、课程设计报告书的质量、态度、考勤、 答辩情况等各因素。具体评分标准如下:(1)设计方案正确,具有可行性、创新性;30分(2)系统开发效果较好;20分(3)设计报告规范、课程设计报告质量高;20分(4)课程设计答辩时,问题回答正确;20分(5)态度认真
4、、刻苦钻研、遵守纪律;10分按上述五项分别记分后求和,总分按五级制记载最后成绩。优秀(10090分),良好(8089分),中等(7079分),及格(6069分),不及格(059分)设计题目:用C语言实现一元多项式的加减法运算2.开发环境、采用的语言:(1)Windows XP中文操作系统(2) Visual C+3.设计思想(对你的整个设计思路作出说明):问题描述:输入并建立两个多项式并输出多项式,对两个多项式进行加、减法运算,建立一个新多项式并输出。问题思考:用C语言编写一段程序,该程序的功能相当于一个一元多项式的计算器,能够实现按照指数降 幕建立并输岀多项式,并且能够完成多个多项式的相加、
5、相减运算及结果输岀的功能。此程序的数据结构是选择用带表头结点的单链表存储多项式。虽然一元多项式可以用顺序和链表存储结果表示,但顺序结构的最大长度很难确定。比如当多项式的系数较大时,此时就会浪费存储空间,所以应该选用链表结构来存储一元多项式。但链表的结构体可以用来存储多项式的系数、指数、下一个指针3个元素,这样便于实现任意多项式的加法、减法运算。功能设计:(1) 多项式建立:提示用户输入两个多项式A和B,输入形式为:先输入多项式A的项数,回车输入多项式A第一项的系数,空格隔开输入多项式A第一项的指数,继续输入多项式A的其他项,输入方式与上同;再建立多项式B,数据输入方式与建立多项式A相同。(2)
6、 功能项:设计一个功能项,分别为1.输岀多项式a和b2.输岀多项式a+b3.输岀多项式a-b4.退出(3) 执行操作:此时用户可以根据需要选择功能项中四项进行输出。4程序总的流程图:通过设计思想,可设计岀如图4-1所示的一元多项式总流程图:图一元多项式总流程图5.数据结构说明及模块算法说明(或流程图):、存储结构:一元多项式的表示在计算机内可以用链表来表示, 为了节省存储空间, 只存储多项式中系数非零 的项。链表中的每一个结点存放多项式的一个系数非零项, 它包含三个域, 分别存放该项的系数、 指数以及指向下一个多项式项结点的指针。 创建一元多项式链表, 对一元多项式的运算中会出现 的各种可能情
7、况进行分析,实现一元多项式的相加、相减操作。基本算法:(1)一元多项式的建立:输入多项式采用头插法的方式, 输入多项式中的一个项的系数和指数, 就产生一个新的结点, 建 立起它的右指针,并用头结点指向它;为了判断一个多项式是否输入结束,定义一个结束标志, 当输入非0时就继续;输入为0时,就结束一个多项式的输入。(2)显示一元多项式:如果系数是大于0的话就输岀V+系数MA指数的形式;如果系数是小于0的话就输岀的形式;如果指数为0的话就直接输岀系数; 如果指数是1的话就直接输岀;如果 指数是-1的话, 就直接输岀。(3)一元多项式加法运算 :从两个多项式的头部开始判断,当两个多项式的某一项度不为空
8、时,假设P、Q分别指向多项式A和多项式B中当前进行比较的结点,然后比较两个结点中的指数项,有三种情况:1、当P所指结点的指数小于Q的话,就应该复制P的结点到多项式链中。2、P所指结点的指数如果大于Q的指数的话,就应该复制Q的结点到多项式链中。3、当P所指结点的指数等于Q所指结点的 指数时,则将两个结点中的系数相加,若和不为0,则修改P所指结点的系数值,同时释放Q所指结点;若和为0,从多项式A的链表中删除相应结点,并释放P、Q所指结点。加法流程图如 图所示:图一元多项式加法运算流程图多项式的和的链r(4) 一元多项式的减法同类项结束从两个多项式的头部开始判断,当两个多项式的某一项度不为空时,假设
9、P、Q分别指向多项式A和多项式B中当前进行比较的结点,然后比较两个结点中的指数项,有三种情况: 当P所指结点的指数小于Q的话,就应该复制P的结点到多项式链中。 果大于Q的指数的话,就应该复制Q的结点到多项式链中, 当P所指结点的指数等于Q所指结点的指数时,并将Q中的系数相加,若和不为0,则修改P所指结点的系数值,多项式A的链表中删除相应结点,并释放P、Q所指结点1、2、P所指结点的指数如并将建立的结点系数变为相反数。 的结点系数变为相反数,并将两个结点 同时释放Q所指结点;若和为0,从减法流程图如图所示:3、开始_J图一元多项式减法运算流程图6.程序运行说明及结果截图:欢迎界面:程序打开,首先
10、显示上的是欢迎界面,在欢迎界面下方有第一个多项式的输入模块。匚:丄:占乜,唸由亍便 斗| *WKMW K-WX* KW X1W常MX首儒输入多项式曲项融输入界面:看到输入界面后, 输入第一个多项式的项数,接下来输入这个多项式第一项的系数,空格继续输入这个多项式的指数。回车继续输入下一项,输入完后回车输入下一个多项式图输入界面功能选项:当数据输入完成后进入功能选项,在功能选项可以选择自己想要实现的功能进行操作图欢迎界面G 三 t3tti8 络构ADDIJIIQFS明起-MD*代【卩侮涉恨用Mw at at鼻 M !;乂8*图功能选项多项式输出:在执行操作中选择1,输出多项式a和b图多项式输出多项
11、式相加:在执行操作中选择2,输出多项式图多项式相加多项式相减:在执行操作中选择3,输出多项式a-b图多项式相减7.程序调试及测试过程记载:本次课程设计中,经过反复调试,程序已经可以正常运行。在a+b设计该算法时,出现了一些问题, 例如在建立链表时头指针的设立导致了之后运用到相关的指针时没能很好的移动指针出现了数 据重复输出或是输出系统缺省值, 不能实现算法。 实现加法时该链表并没有向通常那样通过建立 第三个链表来存放运算结果, 而是再度利用了链表之一来进行节点的比较插入删除等操作。 为了 使输入数据按指数降序排列, 可在数据的输入后先做一个节点的排序函数, 通过对链表排序后再 进行之后加减运算
12、。8.总结及心得体会:在这次课程设计中, 我遇到了不少困难, 但是在我的坚持和虚心请教中都得到顺利解决。 在这次 课程设计中,我发现理论必须和实践相结合,才能真正学会程序设计,才能完成一个课题。 在这次设计中我参考了不少书籍, 从中学到了课堂中无法学到的许多东西,对此我感到很兴奋。 原来不断的学习,不断的探索是苦中带着甜,虽然经历了不少弯路, 经历了不少挫折,但当程序调试 成功后,当运行能达到要求后,我感到十二分成就感。面对课题,要展现自信出来,这是成功的 一半,在这个设计过程中,不懂的可以虚心向老师请教,与同学交流经验。态度是成功的基石! 在我这课题中, 关键在于对一元多项式的表示及相加的操
13、作。这个实际问题, 在学习过的知识中 找到一种合适的模型来模拟, 数据结构的选择是主要, 而对于编写代码, 所涉及的并不是很复杂, 对于链表数据存储访问方式,在C语言的学习过程中已经有过很多讲解,为了进一步了解,我 还阅读了一些数据结构中关于链表的叙述。对于这个课题,运用C语言简单一点的结构化程序 设计已足能满足要求而不至于结构过于复杂, 为了简便的实现插入操作, 我选择了一个带表头结 点的链表。 在写源代码时要注意指针使用的正确性, 为产生的新结点需及时分配存储空间。 在设 计中将问题抽象化, 而完成后在运行时, 可以说是用抽象的数据模型来解决实际问题。 我的这个 课题相比较于其他同学来说,
14、是相对简单的一点的。在现实中, 很多功能现在都没法实现, 还有 不少操作需进一步完善, 这次程序设计有很多不足处, 可能是因为经验不足, 对问题预期不够等 一些不可预见的原因所致,这些都是我以后要汲取的教训。9.附录:源代码(注意要加上详细的注释)#include#includetypedef struct Polynomial float coef;int exp n;struct Poly no mial *n ext;*Pol yn ,Pol ynomial; a-bn);岀多项式a和bnt2.建立多项式a+bnt3.建立多项式prin tf(t4.退 岀n* *n);for(;flag
15、=0)printf(执行操作:);sca nf(%d, &flag);if(flag=1) printf(多项式a:);PrintPolyn(pa);printf(多项式b:);PrintPolyn(pb);printf(*功能项编请输入功能项编号*n)continue*if(flag=2)pc=AddPo lyn( pa,pb);printf(“多项式a+b:);PrintPolyn(pc);DestroyPo lyn( pc);printf(*n)c ontinue功能项编if(flag=3)pd=SubtractPo lyn( pa,pb); printf(多项式a-b:);PrintPolyn(pd);DestroyPo lyn( pd)printf(*n);c ontinue功能项编if(flag=4
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 妇幼保健机构管理流程优化方案
- 幼儿园环保教育公开课教案设计
- 信息化教学环境建设方案探讨
- 企业财务状况年度分析与对策建议
- 初中数学稳定性教学案例分析与反思
- 高压线路检修安全操作规范文件
- 合同风险识别及防范策略报告
- 基层干部公文写作技巧与心得交流
- 柔性制造系统在食品加工厂的优化应用
- 废弃物买卖合同框架与实务要点
- 寓言故事《农夫与蛇》寓言故事绘本课前三分钟演讲故事
- 物流公司安全管理制度范本
- T-SZRCA 009-2024 拖链型机器人特种线缆技术规范
- 跨区域连锁经营模式下的蜜雪冰城供应链管理
- 银企对账培训课件
- 2025年西安交投投资有限公司招聘笔试参考题库含答案解析
- 2024北京西城外国语学校七年级(上)期中语文(教师版)
- 电力基建安全培训
- 新教材湘艺版七年级音乐上册全册核心素养教案(简案)
- 2021年版《医疗废物分类目录》
- 新版浙教版2024-2025学年度八年级数学上册几何复习专题卷含答案
评论
0/150
提交评论