数据结构课程设计一元多项式的加减法运算.docx

上传人:b****8 文档编号:11956663 上传时间:2023-06-03 格式:DOCX 页数:13 大小:99.82KB
下载 相关 举报
数据结构课程设计一元多项式的加减法运算.docx_第1页
第1页 / 共13页
数据结构课程设计一元多项式的加减法运算.docx_第2页
第2页 / 共13页
数据结构课程设计一元多项式的加减法运算.docx_第3页
第3页 / 共13页
数据结构课程设计一元多项式的加减法运算.docx_第4页
第4页 / 共13页
数据结构课程设计一元多项式的加减法运算.docx_第5页
第5页 / 共13页
数据结构课程设计一元多项式的加减法运算.docx_第6页
第6页 / 共13页
数据结构课程设计一元多项式的加减法运算.docx_第7页
第7页 / 共13页
数据结构课程设计一元多项式的加减法运算.docx_第8页
第8页 / 共13页
数据结构课程设计一元多项式的加减法运算.docx_第9页
第9页 / 共13页
数据结构课程设计一元多项式的加减法运算.docx_第10页
第10页 / 共13页
数据结构课程设计一元多项式的加减法运算.docx_第11页
第11页 / 共13页
数据结构课程设计一元多项式的加减法运算.docx_第12页
第12页 / 共13页
数据结构课程设计一元多项式的加减法运算.docx_第13页
第13页 / 共13页
亲,该文档总共13页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

数据结构课程设计一元多项式的加减法运算.docx

《数据结构课程设计一元多项式的加减法运算.docx》由会员分享,可在线阅读,更多相关《数据结构课程设计一元多项式的加减法运算.docx(13页珍藏版)》请在冰点文库上搜索。

数据结构课程设计一元多项式的加减法运算.docx

数据结构课程设计一元多项式的加减法运算

武汉理工大学华夏学院

课程设计报告书

课程名称:

数据结构与算法分析

题目:

用c语言实现一兀多项式的加减法运算

系名:

信息工程系

专业班级:

物联网工程1122班

姓名:

隋明超

学号:

***********

2014年月_3_日

武汉理工大学华夏学院信息工程系

课程设计任务书

课程名称:

数据结构与算法分析指导教师:

司晓梅

班级名称:

物联网1121-2开课系、教研室:

信息系计算机

一、课程设计目的与任务

《数据结构》课程设计是为训练学生的数据组织能力和提高程序设计能力而设置的增强

实践能力的课程。

目的:

学习数据结构课程,旨在使学生学会分析研究数据对象的特性,学会数据的组织方法,以便选择合适的数据的逻辑结构和存储结构以及相应操作,把现实世界

中的问题转换为计算机内部的表示和处理,这就是一个良好的程序设计技能训练的过程。

高学生的程序设计能力、掌握基本知识、基本技能,提高算法设计质量与程序设计素质的培养就是本门课程的课程设计的目的。

任务:

根据题目要求,完成算法设计与程序实现,并按规定写出课程设计报告。

二、课程设计的内容与基本要求

设计题目:

用c语言实现一元多项式的加减法计算

〔问题描述〕输入并建立两个多项式并输出多项式

设计一个程序:

对两个多项式进行加、减法运算,建立一个新多项式并输出。

〔实现提示〕:

选择单链表存储多项式

具体要完成的任务是:

A.编制完成上述问题的C语言程序、进行程序调试并能得出正确的运行结果。

B.写出规范的课程设计报告书;

三、课程设计步骤及时间进度和场地安排

时间:

本课程设计安排在第18周地点:

现代教育中心

具体时间安排如下:

第一天:

布置题目,确定任务、查找相关资料

第二天〜第四天:

功能分析,编写程序,调试程序、运行系统;

第五天上午:

撰写设计报告;

第五天下午:

程序验收、答辩。

四、课程设计考核及评分标准

课程设计考核将综合考虑学生的系统设计方案、

运行结果、课程设计报告书的质量、态

考勤、答辩情况等各因素。

具体评分标准如下:

(1)设计方案正确,具有可行性、创新性;

30

(2)系统开发效果较好;

20

(3)设计报告规范、课程设计报告质量高;

20

(4)课程设计答辩时,问题回答正确;

20

(5)态度认真、刻苦钻研、遵守纪律;

10

按上述五项分别记分后求和,总分按五级制记载最后成绩。

优秀(100〜90分),良好(80〜89分),

中等(70〜79分),

及格(60〜69分),

不及格(0〜59分)

1.设计题目:

用C语言实现一元多项式的加减法运算

2.开发环境、米用的语言:

(1)WindowsXP中文操作系统

(2)VisualC++

3.设计思想(对你的整个设计思路作出说明):

问题描述:

输入并建立两个多项式并输出多项式,对两个多项式进行加、减法运算,建立一个新多

项式并输出。

问题思考:

用c语言编写一段程序,该程序的功能相当于一个一元多项式的计算器,能够实现按照

指数降幕建立并输出多项式,并且能够完成多个多项式的相加、相减运算及结果输出的功能。

此程序的数据结构是选择用带表头结点的单链表存储多项式。

虽然一元多项式可以用

顺序和链表存储结果表示,但顺序结构的最大长度很难确定。

比如当多项式的系数较大时,

此时就会浪费存储空间,所以应该选用链表结构来存储一元多项式。

但链表的结构体可以用

来存储多项式的系数、指数、下一个指针3个元素,这样便于实现任意多项式的加法、减法

运算。

功能设计:

(1)多项式建立:

提示用户输入两个多项式A和B,输入形式为:

1)先输入多项式A的项数,回车

2)输入多项式A第一项的系数,空格隔开输入多项式A第一项的指数,

3)继续输入多项式A的其他项,输入方式与上同;

4)再建立多项式B,数据输入方式与建立多项式A相同。

(2)功能项:

设计一个功能项,分别为

1.输出多项式a和b

2.

输出多项式a+b

3.

输出多项式a-b

4.

退出

(3)执行操作:

此时用户可以根据需要选择功能项中四项进行输出。

4.程序总的流程图:

通过设计思想,可设计出如图4-1所示的一元多项式总流程图:

图一元多项式总流程图

5.数据结构说明及模块算法说明(或流程图):

存储结构:

一元多项式的表示在计算机内可以用链表来表示,为了节省存储空间,只存储多项式中

系数非零的项。

链表中的每一个结点存放多项式的一个系数非零项,它包含三个域,分别存

放该项的系数、指数以及指向下一个多项式项结点的指针。

创建一元多项式链表,对一元多

项式的运算中会出现的各种可能情况进行分析,实现一元多项式的相加、相减操作。

基本算法:

(1)一元多项式的建立:

输入多项式采用头插法的方式,输入多项式中的一个项的系数和指数,就产生一个新的结点,建立起它的右指针,并用头结点指向它;为了判断一个多项式是否输入结束,定义一个结束标志,当输入非o时就继续;输入为o时,就结束一个多项式的输入。

(2)显示一元多项式:

如果系数是大于0的话就输出<+系数皿人指数〉的形式;如果系数是小于0的话就输出<系数xA指数〉的形式;如果指数为0的话就直接输出<系数〉;如果指数是1的话就直接输出<+M>如果指数是-1的话,就直接输出<-M>。

(3)—元多项式加法运算:

从两个多项式的头部开始判断,当两个多项式的某一项度不为空时,假设P、Q分别

指向多项式A和多项式B中当前进行比较的结点,然后比较两个结点中的指数项,有三种情

况:

1、当P所指结点的指数小于Q的话,就应该复制P的结点到多项式链中。

2、P所指结点的指数如果大于Q的指数的话,就应该复制Q的结点到多项式链中。

3、当P所指结点的指数等于Q所指结点的指数时,则将两个结点中的系数相加,若和不为0,则修改P所指结

点的系数值,同时释放Q所指结点;若和为0,从多项式A的链表中删除相应结点,并释放P、Q所指结点。

加法流程图如图所示:

 

合并同类项

 

图一元多项式加法运算流程图

(4)一元多项式的减法

从两个多项式的头部开始判断,当两个多项式的某一项度不为空时,假设P、Q分别

指向多项式A和多项式B中当前进行比较的结点,然后比较两个结点中的指数项,有三种情

况:

1、当P所指结点的指数小于Q的话,就应该复制P的结点到多项式链中。

2、P所指结点的指数如果大于Q的指数的话,就应该复制Q的结点到多项式链中,并将建立的结点系数变为相反数。

3、当P所指结点的指数等于Q所指结点的指数时,并将Q的结点系数变为相反数,并将两个结点中的系数相加,若和不为0,则修改P所指结点的系数值,同时释放Q

所指结点;若和为0,从多项式A的链表中删除相应结点,并释放P、Q所指结点。

减法流

程图如图所示:

图一元多项式减法运算流程图

6.程序运行说明及结果截图:

欢迎界面:

程序打开,首先显示上的是欢迎界面,在欢迎界面下方有第一个多项式的输入模块。

SI

情输人多项丸I的项数;

图欢迎界面

输入界面:

看到输入界面后,输入第一个多项式的项数,接下来输入这个多项式第一项的系数,空格继续输入这个多项式的指数。

回车继续输入下一项,输入完后回车输入下一个多项式

图输入界面

功能选项:

当数据输入完成后进入功能选项,在功能选项可以选择自己想要实现的功能进行操作。

图功能选项

多项式输出:

在执行操作中选择1,输出多项式a和b。

 

a+b。

a-b。

图多项式输出

多项式相加:

在执行操作中选择2,输出多项式

图多项式相加

多项式相减:

在执行操作中选择3,输出多项式

图多项式相减

7.程序调试及测试过程记载:

本次课程设计中,经过反复调试,程序已经可以正常运行。

在设计该算法时,出现

了一些问题,例如在建立链表时头指针的设立导致了之后运用到相关的指针时没能很好

的移动指针出现了数据重复输出或是输出系统缺省值,不能实现算法。

实现加法时该链

表并没有向通常那样通过建立第三个链表来存放运算结果,而是再度利用了链表之一来

进行节点的比较插入删除等操作。

为了使输入数据按指数降序排列,可在数据的输入后

先做一个节点的排序函数,通过对链表排序后再进行之后加减运算。

8.总结及心得体会:

在这次课程设计中,我遇到了不少困难,但是在我的坚持和虚心请教中都得到顺利解

决。

在这次课程设计中,我发现理论必须和实践相结合,才能真正学会程序设计,才能完成一个课题。

在这次设计中我参考了不少书籍,从中学到了课堂中无法学到的许多东西,对此

我感到很兴奋。

原来不断的学习,不断的探索是苦中带着甜,虽然经历了不少弯路,经历了

不少挫折,但当程序调试成功后,当运行能达到要求后,我感到十二分成就感。

面对课题,

要展现自信出来,这是成功的一半,在这个设计过程中,不懂的可以虚心向老师请教,与同

学交流经验。

态度是成功的基石!

在我这课题中,关键在于对一元多项式的表示及相加的操作。

这个实际问题,在学习过的知

识中找到一种合适的模型来模拟,数据结构的选择是主要,而对于编写代码,所涉及的并不

是很复杂,对于链表数据存储访问方式,在C语言的学习过程中已经有过很多讲解,为了进

一步了解,我还阅读了一些数据结构中关于链表的叙述。

对于这个课题,运用C语言简单一

点的结构化程序设计已足能满足要求而不至于结构过于复杂,为了简便的实现插入操作,我

选择了一个带表头结点的链表。

在写源代码时要注意指针使用的正确性,为产生的新结点需及时分配存储空间。

在设计中将问题抽象化,而完成后在运行时,可以说是用抽象的数据模型来解决实际问题。

我的这个课题相比较于其他同学来说,是相对简单的一点的。

在现实中,

很多功能现在都没法实现,还有不少操作需进一步完善,这次程序设计有很多不足处,可能

是因为经验不足,对问题预期不够等一些不可预见的原因所致,这些都是我以后要汲取的教

训。

9.附录:

源代码(注意要加上详细的注释)

#include<>

#include<>

typedefstructPolynomial{

floatcoef;

intexpn;

structPolynomial*next;

}*Polyn,Polynomial;出多项式a和b\n\t2.建立多项式a+b\n\t3.建

立多项式a-b\n");

printf("\t4.退出生************************请输入功能项编号

***********************\n")・

for(;;flag=0){

printf("执行操作:

”);

scanf("%d",&flag);

if(flag==1){

printf(”多项式a:

");PrintPolyn(pa);

 

}

if(flag==2){

pc=AddPolyn(pa,pb);

printf(”多项式a+b:

");PrintPolyn(pc);

 

}

if(flag==3){

pd=SubtractPolyn(pa,pb);

printf(”多项式a-b:

");PrintPolyn(pd);

***********************\n")・continue・

}

if(flag==4)break;

if(flag<1||flag>4)printf("Error\n");continue;

}

何创建一个多项式

创建一个新的一元多项式,是创建一个单链表,然后用do循环输入一元多项式从

高幕项到低幕项的顺序输入各项的系数和幕,以“系数,指数”的格式输入数据,当系数与指数两项同时为零时停止输入。

2.加法算法是如何工作

将两个多项式执行pa+pb的计算,从高幕次项向低幕次项,无等幕项直接将数值输出结果单链表,有等幂项两系数相加后输出到结果单链表中。

 

指导教师评语:

签名:

2014年1月5日

 

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 经管营销 > 经济市场

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

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