


版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、J 胡裔啜工您暁Hunan Institute of Science and Technology程序设计与数据结构综合课程设计论文题 目程序设计与数据结构综合课程设计专 业:计算机科学与技术班 级:N计科12-1F姓 名:吴文定学 号:24122401811指导教师:申丽平、课程认识数据结构课程主要是研究非数值计算的程序设计问题中所出现的计算机操 作对象以与它们之间的关系和操作的学科。数据结构是介于数学、计算机软件 和计算机硬件之间的一门计算机专业的核心课程,它是计算机程序设计、数据 库、操作系统、编译原理与人工智能等的重要根底,广泛的应用于信息学、系 统工程等各种领域。学习数据结构是为了将
2、实际问题中所涉与的对象在计算机中表示出来并对 它们进展处理。通过课程设计可以提高学生的思维能力,促进学生的综合应用 能力和专业素质的提高。通过此次课程设计主要达到以下目的:了解并掌握数据结构与算法的设计方法, 具备初步的独立分析和设计能力;初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等根本方法和技能;提高综合运用所学的理论知识和方法独立分析和解决问题的能力;训练用系统的观点和软件开发一般规 X进展软件开发,培养软件工作者所 应具备的科学的工作方法和作风。训练学生灵活应用所学数据结构知识,独立完成问题分析,结合数据结构理论知识,编写程序求解指定问题。问题描述与分析1、问题描述设计一个
3、一元多项式程序,并完成多项式的加法、减法、以与乘法的运算。如 A(x)=15+6x+9x7+3x18B(x)=4x+5x6+16x7 求 A+B A*B2、问题分析 .在数学上,一个一元多项式 Pn(x)可按升幕写成:Pn(x)=a 0+a1 x+a2 xA2+an xAn-1.它由n+1个系数惟一确定,因此,在计算机里,它可用一个线性表P来表示:Pn=(a0,a1,a2,an)每一项的指数i隐含在其系数ai的序号里。设m<n,如此两个多项式相加或者相减的结果Rn(x)=Pn(x)+-Qm(x)。乘法也是类似,通过使用链式存储结构存放多项式的每一项,从而将一元多项 式的运算转化成对链表的
4、运算。 由于一元多项式的建立、运算等操作经常要插入或者删除元素,所以考 虑使用链式存储结构带头结点的链表作为数据结构,以减少移动元素的次 数,减少空间复杂度和空间复杂度。 减法运算可以转化为加法运算,因此可以大大地简化程序。 乘法运算可以屡次调用加法函数实现。三、数据结构描述1、数据结构选择本程序讨论的是利用线性链表的根本操作来实现一元多项式的运算。2、数据结构与多项式的结合在数学中,每个单项式都具有系数和指数,当系数为0时,该项就失去了意义,在计算机内要表示一个多项式,至少以下数据信息:系数信息、指数 信息和指向下一个单项式的指针。通过指针,我们就可以把多个单项式连接 起来,形式一个多项式,
5、需要说明的是从广义的角度讲,单项式也是一个多 项式。3、数据结构的特点与结点表示线性链表的另一个特点是插入或删除结点是不必移动其他结点,而仅需调整指针的指向关系以适应新的数据关系,从而大大简化了创建、 插入和删除的工作。基于以上的分析,我们定义多项式的数据结构为如下结构体形式:struct nodefloat coef;/ 系数int expn;/ 指数struct node *next;/指针指向下一个结点;四、主要算法流程描述个人负责局部如图4-1为主函数流程图图4-1图5-1为加法算法的流程图图5-1图6-1为减法算法的流程图C开-1r将B X中所有结点的系数取相反1r调用加法函数,Ad
6、dPoly n图6-1图7-1为输出算法的流程图 1FFF1ri10-1-2-3-4111F1ririF输出AX输出BX加法减法乘法除法head=head->n ext;prin tf("%.1f+",p->coef);prin tf("XA(%d)+",p->exp n);prin tf("bn");五、使用说明该程序在VC+6.0中调试通过,没有错误和警告,运行结果经过检验为正确。以下即为该程序运行结果效果图。图中采用的是计算多项式3xA+2xA7+4xA2+1和xA4+5xA3+6xA5的输入方式和加减乘除四种
7、运算结果进展的演示:1、输入并建立多项式链表"欢迎使用一元多项式运算系统Cx>=l.0+3.0X1+4.0Ka2+2.0X7Cx>=5.0X"3+XA4+6即"5:402,6 >: 3,1 式如 2,6>:2,7 式 2,6>:4,2 式Sa2,6>:i,e:3式如 2,6):1,4 式如2,£汚,3 式如 2,>:6,5一!nI J 两多项式做加法洁得到的多项式知A<x>+B<x>=l.0+3.0Xl+4.0XA2+S.0XA3+XA4+6_0XA5+2.0XA7两多项式做碱迭后得到的多
8、项式为二A<x>-B<x)=l .0+3.3W1 +4.0X 2 +<-5 .0>MA3 + <-1.0>X4+C-fi .0>MA5+2.0X 两多项式做乘法后得到的多项式为:A<x>*B<x>=5.0XA3 +16,0X"4+29 ,0KA5 +22.0X"6+24*0X"7+10.0X10+2.0X11+12.0K"12 两多项式做除注后得到的多项式为:fi<x>/B(x>-0.3XA24.0X*2+3.0XAl+1.0 + (-0-3>X%+<-
9、l.?>X*5Press any key to cent in me2、加、减、乘、除运算3、使 用条件与方法条件:请在 Microsoft (R) Developer Studio VC+6.0开发环境下运行。方法:将“ Add"、“Copy"、“ CreatePolyn "、“ Divide "、“ log in "、“ Multiply "、“ Print " 、“ ReArrange"、“ struct node " 、“ Substraction "包含在同一文件夹下面,运行“
10、login ",然后根据提示,输入链表每一个结点的系数 和指数值,然后选择加减乘除这四个运算的任意一个,得到结果。4、须知事项1、在输入多项式每一个结点时,系数定义为浮点型,指数定义为整型,用户输入的 时候,应该注意,系数输入浮点和整型都可以,而指数为整型,假如输入为浮点型, 如此会产生误差。2 、用户在输入选择某一个算法时,应该按照界面上的提示说明进展输 入,假如超出提示 X围,如此会提示让用户重新输入。3 、用户在包含文件的时候,请注意每一项文件的完整性。缺失如此会导致运行错误。六、调试分析说明调试过程中出现的问题和处理方式:1、在编写加法函数时,比拟p->exp n,q-
11、>expn的时候,应该编写下面程序来使问题简化。int pare(i nt a,i nt b)if(a<b)return -1;elseif(a=b)return 0;elsereturn 1;2、 在编写减法程序的时候,应该注意调用加法程序,只需要在后面的链表系数全部乘以-1丨,使得减法程序变得十分简洁。struct node *Subtracti on( struct node *p,struct node *q)struct node *headq=q,*head;q=q->n ext;while(q)q->coef=q->coef*(-1);q=q->
12、;n ext;head=AddPo lyn( p,headq);return head;3、在编写 print 函数时,由于多项式是由单项式相加,所以在输出的时候printf("XA%d+",p->expn);每一次都会输出+号,所以在最后的时候需要printf( b”);来删除最后的+号,但是由于用户可能输入A或者B是0,所以最后都没有+,但是原来程序已经把最后一个字符通过b删除了,所以设定了一个标志符,判断如果为0,如此多输出一个0,来解决了这个问题。七、特色和改良思想一、特色:我们组在成功完成一元多项式的加法、减法、和乘法之后,又成功地 解决了一元多项式的除法问
13、题,使得对一元多项式的四项根本运算都可以通过本程序 来解决。并且在编写“ Divide 函数时,都是通过调用前面已有的算法,使得程序很 简洁,便于移植。二、改良思想:1、我们组在编写 CreatePolyn,创建链表的时候,在考虑到输入时候X的指数可能不是按照顺序来输入的,所以采用了全部输入完成后经过对链表的排序来使 其有序,经过陈教师的指导后,我们实现了“边输入、边排序这一思想,即在输入 的时候就对每一项进展插入排序。使得程序的算法思想变得更加先进,节省了时间复 杂度和空间复杂度。2、在由每个人完成个自的模块后进展融合的时候,发现许多工具函数都是可 以相互调用的,之后我们规定了各种函数调用的
14、标准,使得整体程序变得简洁。3、在编写 print 函数时,由于后面会多输出一个+号,所以在查找参考 书之后,通过printf( b”);,使得这个问题巧妙的解决了。八、课程设计总结本次的数据结构课程设计针对具体的实际项目来进展需求分析,测试计划,概要设计,详细设计,测试分析等具体的步骤流程走下来,从中我收获了很多经过一周的课程设计,有很多的心得体会。首先,在编写函数之前要充分利用图书资源和网络资源;其次,应该更详细的考虑实际情况,才能使程序更切合实际,更具有实用性;更多的我想应该是组员之间的合作精神吧!通过这次课程设计练习,使我更深刻地理解了数据结构重要存储结构的的精髓-线性链表的使用。完成
15、整个程序设计有,对线性链表的使用掌握的更加熟练。同时通过直接对链表的各种插入、查找、排序等操作,加深了对数据结构的理解 和认识。并在完成课程设计的过程作主动查阅了相关资料,学到了不少课本上没有的 技术知识。经过这次课程设计,我深刻认识到算法在程序设计中的重要性,一个完整的程序 总是由假如干个函数构成的,这些相应的函数表现了算法的根本思想。通过此次课程设计,我了解了编写应用软件的一般步骤,获得了很多宝贵的经验。特别是怎样将理论与实践相结合,把书本上的的内容应用到我们做的程序上。怎样使 各个子模块实施其详细功能,特别是各个子模块之间的接口,一定要相当清晰达到相 互协调的作用。其次我熟悉了数据结构的
16、知识学会了很多关于程序设计的经验和技巧, 明白了程序设计的使用性和通用性事程序生存周期长短的关键,学会了程序调试的一 般方法。重要的是通过本次程序设计,我逐步具备了走向程序员的根本素质。知道如 何在困难重重时一步一步细心发现问题,解决问题。知道了在软件设计中对界面和功 能如何平衡,如何达到相对完美。编程是一件枯燥乏味工作,但是只要认真专研,我们会从中学到很多在课本上学 不到或者无法在课堂上掌握的知识,同时也能从中感受到编程的乐趣。兴趣是可以培 养的,只要坚持下去,面对困难我们总能够找到解决问题的方法。计算多项式的加、减、乘法还有除法的运算 该程序虽然不是很大,这次还是由几位同学合作才完成这一任务。通过小组的分工与
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 北京市西城区第三十九中2025年物理高二下期末复习检测模拟试题含解析
- 冬季锻炼对小学生的重要性
- 宣传单培训课件
- 天津市大港八中2025年物理高二第二学期期末教学质量检测试题含解析
- 二零二五年度FDA注册委托代理及知识产权保护服务协议
- 二零二五年度保姆与雇主关系维护合同范本
- 二零二五年春茶批发代理销售合同
- 二零二五年度腻子产品线上线下销售合同
- 2025年度空气净化器销售与安装服务合同
- 二零二五年度管道安装施工合同协议书范本
- 植保生物制品的工厂化天敌昆虫产业化生产基地可行性研究报告
- 2022更新国家开放大学电大本科《运输管理》2023-2024期末试题及答案(试卷代号:1448)
- 超级玛丽像素风教学班会PPT模板
- 《兽药经营许可证》培训记录
- 住宿酒店商务宾馆品质服务体验管理 酒店工程验收标准-模版PPT
- 盾构施工风险及典型事故案例(多图)
- 沥青路面施工质量控制经验与技术交流培训PPT(126页图文并茂)
- 离散数学英文讲义:1-3 Predicates and Quantifiers
- 会计师事务所工程财务决算审核报告
- 一个国王地爱情故事英文版
- 小学环保知识宣传活动记录表
评论
0/150
提交评论