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

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

武汉理工大学华夏学院课程设计报告书

课程名称:数据结构与算法分析

题目:用C语言实现一元多项式的加减法运算系名:信息工程系

专业班级:物联网工程1122班

姓名:隋明超

学号:

指导教师:司晓梅

2014年 1 月 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)Windows XP 中文操作系统

(2) Visual C++

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)一元多项式的建立:

输入多项式采用头插法的方式,输入多项式中的一个项的系数和指数,就产生一个新

的结点,建立起它的右指针,并用头结点指向它;为了判断一个多项式是否输入结束,定义一个结束标志,当输入非0时就继续;输入为0时,就结束一个多项式的输入。

(2)显示一元多项式:

如果系数是大于0的话就输出<+系数M^指数>的形式;如果系数是小于0的话就输出<系数x^指数>的形式;如果指数为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. 程序运行说明及结果截图:

欢迎界面:

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

图欢迎界面

输入界面:

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

图输入界面

功能选项:

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

图功能选项

多项式输出:

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

图多项式输出

多项式相加:

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

图多项式相加

多项式相减:

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

图多项式相减

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

本次课程设计中,经过反复调试,程序已经可以正常运行。在设计该算法时,出现

了一些问题,例如在建立链表时头指针的设立导致了之后运用到相关的指针时没能很好的移动指针出现了数据重复输出或是输出系统缺省值,不能实现算法。实现加法时该链表并没有向通常那样通过建立第三个链表来存放运算结果,而是再度利用了链表之一来进行节点的比较插入删除等操作。为了使输入数据按指数降序排列,可在数据的输入后

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

8.总结及心得体会:

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

决。在这次课程设计中,我发现理论必须和实践相结合,才能真正学会程序设计,才能完成一个课题。在这次设计中我参考了不少书籍,从中学到了课堂中无法学到的许多东西,对此我感到很兴奋。原来不断的学习,不断的探索是苦中带着甜,虽然经历了不少弯路,经历了不少挫折,但当程序调试成功后,当运行能达到要求后,我感到十二分成就感。面对课题,要展现自信出来,这是成功的一半,在这个设计过程中,不懂的可以虚心向老师请教,与同学交流经验。态度是成功的基石!

在我这课题中,关键在于对一元多项式的表示及相加的操作。这个实际问题,在学习过的知识中找到一种合适的模型来模拟,数据结构的选择是主要,而对于编写代码,所涉及的并不是很复杂,对于链表数据存储访问方式,在C语言的学习过程中已经有过很多讲解,为了进一步了解,我还阅读了一些数据结构中关于链表的叙述。对于这个课题,运用C语言简单一点的结构化程序设计已足能满足要求而不至于结构过于复杂,为了简便的实现插入操作,我选择了一个带表头结点的链表。在写源代码时要注意指针使用的正确性,为产生的新结点需及时分配存储空间。在设计中将问题抽象化,而完成后在运行时,可以说是用抽象的数据模型来解决实际问题。我的这个课题相比较于其他同学来说,是相对简单的一点的。在现实中,很多功能现在都没法实现,还有不少操作需进一步完善,这次程序设计有很多不足处,可能是因为经验不足,对问题预期不够等一些不可预见的原因所致,这些都是我以后要汲取的教训。

9. 附录:源代码(注意要加上详细的注释)

#include<>

#include<>

typedef struct Polynomial{

float coef;

int expn;

struct Polynomial *next;

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

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

for(;;flag=0){

printf("执行操作:");

scanf("%d",&flag);

if(flag==1){

printf("多项式a:");PrintPolyn(pa);

printf("多项式b:");PrintPolyn(pb);printf("*************************请输入功能项编号************************\n");continue;

}

if(flag==2){

pc=AddPolyn(pa,pb);

printf("多项式a+b:");PrintPolyn(pc);

DestroyPolyn(pc);printf("*************************请输入功能项编号************************\n");continue;

}

if(flag==3){

pd=SubtractPolyn(pa,pb);

printf("多项式a-b:");PrintPolyn(pd);

DestroyPolyn(pd);printf("**************************请输入功能项编号***********************\n");continue;

}

if(flag==4) break;

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

顺序链式一元多项式加法、减法、乘法运算的实现

1.1设计内容及要求 1)设计内容 (1)使用顺序存储结构实现多项式加、减、乘运算。 例如: 10321058)(2456+-+-+=x x x x x x f ,x x x x x x g +--+=23451020107)( 求和结果:102220128)()(2356++-+=+x x x x x g x f (2)使用链式存储结构实现多项式加、减、乘运算, 10305100)(1050100+-+=x x x x f ,x x x x x x g 320405150)(10205090+++-= 求和结果:1031040150100)()(102090100++-++=+x x x x x x g x f 2)设计要求 (1)用C 语言编程实现上述实验内容中的结构定义和算法。 (2)要有main()函数,并且在main()函数中使用检测数据调用上述算法。 (3)用switch 语句设计如下选择式菜单。 ***************数据结构综合性实验**************** *******一、多项式的加法、减法、乘法运算********** ******* 1.多项式创建 ********** ******* 2.多项式相加 ********** ******* 3.多项式相减 ********** ******* 4.多项式相乘 ********** ******* 5.清空多项式 ********** ******* 0.退出系统 ********** ******* 请选择(0—5) ********** ************************************************* *请选择(0-5): 1.2数据结构设计 根据下面给出的存储结构定义: #define MAXSIZE 20 //定义线性表最大容量

小朋友加减法窍门及100以内加减法练习题

班级:姓名: 20+5= 64-32= 87-72= 88-8= 48-29= 62+26= 86-77= 39-36= 75+24= 51+27= 8+91= 24+43= 13+74= 89-53= 74-55= 80+18= 6+67= 1+18= 93-33= 55+5= 100-57= 34+53= 23-17= 76-65= 72+23= 43+42= 75-14= 40-33= 68+15= 10+32= 76+14= 64-4= 62+32= 83-62= 68-11= 78-15= 69-8= 10+15= 50+16= 98-44= 2+94= 76+4= 65+9= 21+5= 100-56= 29+67= 34-16= 36+49= 39-23= 95-83= 45+13= 82+13= 17+43= 13+55= 93-38= 91-37= 59-54= 73+23= 78-57= 4-1= 95-26= 68-44= 84+1= 57+19= 71-17= 3+67= 39+9= 9+5= 54+46= 90-29= 22+38= 52-11= 89-42= 27-14= 33-9= 44-28= 29+30= 58-8= 8+10= 83-31= 12+7= 50-19= 74-68= 58+16=

20+26= 45-43= 21+35= 34-13= 65-23= 48+7= 27+34= 100-28= 2+55= 89-67= 37+47= 44-31= 5+48= 42+2= 59+3= 96-43= 48-7= 16-14= 92-63= 17+1= 30+41= 48-47= 50+18= 67+12= 53+22= 63+10= 65-21= 16+70= 59-38= 23+24= 46-29= 23-6= 8+72= 12+58= 80-6= 9+54= 99-45= 68-6= 51-49= 7+5= 59-5= 32-1= 2+75= 81+18= 92-83= 95-75= 24-3= 39-13= 17+3= 78+4= 81-2= 72+10= 55-16= 74-49= 70+26= 26+50= 69-29= 39+45= 80-61= 83+7= 45-35= 29+24= 72+7= 48+27= 60-29= 21+55= 1+35= 31-20= 71+25= 94-25= 23+41= 20+55= 43+1= 68+6= 57-44= 97-7= 50+23= 83-22= 25+58= 49+25= 46-28= 47-6= 5+91= 66+34=

一元多项式加减乘除运算

中国计量学院实验报告 实验课程:算法与数据结构实验名称:一元二项式班级:学号: 姓名:实验日期: 2013-5-7 一.实验题目: ①创建2个一元多项式 ②实现2个多项式相加 ③实现2个多项式相减 ④实现2个多项式相乘 ⑤实现2个多项式相除 ⑥销毁一元多项式 实验成绩:指导教师:

二.算法说明 ①存储结构:一元多项式的表示在计算机内可以用链表来表示,为了节省存储 空间,只存储多项式中系数非零的项。链表中的每一个结点存放多项式的一个系数非零项,它包含三个域,分别存放该项的系数、指数以及指向下一个多项式项结点的指针。创建一元多项式链表,对一元多项式的运算中会出现的各种可能情况进行分析,实现一元多项式的相加、相减操作。 ②加法算法

三.测试结果 四.分析与探讨 实验数据正确,部分代码过于赘余,可以精简。 五.附录:源代码#include<> #include<> #include<> typedef struct Polynomial { float coef; int expn; struct Polynomial *next; }*Polyn,Polynomial; 出多项式a和b\n\t2.多项式相加a+b\n\t3.多项式相减a-b\n"); printf("\t4.多项式相除a*b\n\t5.多项式相除a/b\n\t6.销毁多项式\n"); printf("\t7.退出

\n*********************************** ***********\n"); printf("执行:"); scanf("%d",&flag); switch(flag) { case(1): printf("多项式a:");PrintPolyn(pa); printf("多项式b:");PrintPolyn(pb);break; case(2): pc=AddPolyn(pa,pb); printf("多项式a+b:");PrintPolyn(pc); DestroyPolyn(pc);break; case(3): pd=SubtractPolyn(pa,pb); printf("多项式a-b:");PrintPolyn(pd); DestroyPolyn(pd);break; case(4): pf=MultiplyPolyn(pa,pb); printf("多项式a*b:");PrintPolyn(pf); DestroyPolyn(pf);break; case(5): DevicePolyn(pa,pb); break; case(6): DestroyPolyn(pa); DestroyPolyn(pb); printf("成功销毁2个一元二项式\n"); printf("\n接下来要执行的操作:\n1 重新创建2个一元二项式 \n2 退出程序\n"); printf("执行:"); scanf("%d",&i); if(i==1) { // Polyn pa=0,pb=0,pc,pd,pf;//定义各式的头指针,pa与pb在使用前付初值NULL printf("请输入a的项数:"); scanf("%d",&m); pa=CreatePolyn(pa,m);// 建立多项式a printf("请输入b的项

数据结构中实现一元多项式简单计算

数据结构中实现一元多项式简单计算: 设计一个一元多项式简单的计算器。 基本要求: 一元多项式简单计算器的基本功能为: (1)输入并建立多项式; (2)输出多项式; (3)两个多项式相加,建立并输出和多项式; (4)两个多项式相减,建立并输出差多项式; #include #include #define MAX 20 //多项式最多项数 typedef struct//定义存放多项式的数组类型 { float coef; //系数 int exp; //指数 } PolyArray[MAX]; typedef struct pnode//定义单链表结点类型 { float coef; //系数 int exp; //指数 struct pnode *next; } PolyNode; void DispPoly(PolyNode *L) //输出多项式 { PolyNode *p=L->next; while (p!=NULL) { printf("%gX^%d ",p->coef,p->exp); p=p->next; } printf("\n"); } void CreateListR(PolyNode *&L,PolyArray a,int n) //尾插法建表 { PolyNode *s,*r;int i; L=(PolyNode *)malloc(sizeof(PolyNode)); //创建头结点 L->next=NULL; r=L; //r始终指向终端结点,开始时指向头结点for (i=0;i

数据结构一元多项式的计算

课程设计成果 学院: 计算机工程学院班级: 13计科一班 学生姓名: 学号: 设计地点(单位): 设计题目:一元多项式的计算 完成日期:年月日 成绩(五级记分制): _________________ 教师签名:_________________________ 目录 1 需求分析 ......................................................................... 错误!未定义书签。 2 概要设计 ......................................................................... 错误!未定义书签。 2.1一元多项式的建立 ............................................................... 错误!未定义书签。 2.2显示一元多项式 ................................................................... 错误!未定义书签。 2.3一元多项式减法运算 ........................................................... 错误!未定义书签。 2.4一元多项式加法运算 ........................................................... 错误!未定义书签。 2.5 设计优缺点.......................................................................... 错误!未定义书签。3详细设计 .......................................................................... 错误!未定义书签。 3.1一元多项式的输入输出流程图........................................... 错误!未定义书签。 3.2一元多项式的加法流程图................................................... 错误!未定义书签。 3.3一元多项式的减法流程图.................................................. 错误!未定义书签。 3.4用户操作函数....................................................................... 错误!未定义书签。4编码 .................................................................................. 错误!未定义书签。5调试分析 .......................................................................... 错误!未定义书签。4测试结果及运行效果...................................................... 错误!未定义书签。5系统开发所用到的技术.................................................. 错误!未定义书签。参考文献 ............................................................................. 错误!未定义书签。附录全部代码................................................................... 错误!未定义书签。

一年级数学100以内加减法计算题

15-4=4+37=30-3=24-9=70+3=40+6=25+4=38-8=39+8=19+60=95-40=82-5=78+5=37+9=70+13=84-2=68+7=27+60=68-9=60-7=87+9=38-9= 71+9= 39+10= 99+1= 88-9= 70-5= 39+8= 58+25= 58-10= 30-3= 48+7= 18+7= 20+5= 64-32= 87-72= 50-24= 88-8= 48-29= 62+26= 68-26= 86-77= 75+24= 42+49= 51+27= 8+91= 24+43= 67-56= 13+74= 89-53= 74-55= 86+12= 80+18= 6+67= 1+18= 91-18= 93-33= 55+5= 100-57= 48-16= 34+53= 23-17= 76-65=

72+23=43+42=75-14=39+28=40-33=68+15=10+32=14+13=76+14=64-4=62+32=17+59=83-62=68-11=78-15=28+34=69-8=10+15=50+16=21+37=98-44=76+4= 66+30= 65+9= 21+5= 100-56= 98-96= 29+67= 34-16= 36+49= 38+38= 39-23= 95-83= 45+13= 33+41= 82+13= 17+43= 13+55= 84-53= 93-38= 91-37= 59-54= 73+23= 78-57= 4-1= 2+45= 95-26= 68-44= 84+1= 16+21= 57+19= 71-17= 3+67= 34-18= 39+9= 9+5= 54+46= 5+31= 90-29= 22+38= 52-11= 25+73= 89-42=

600道100以内加减法口算题(A4直接打印)

一年级100以内口算题用时:错误: 58-19= 74-68= 58+16= 12+7= 18+56= 27+70= 53-4= 49+25= 79-32= 24+49= 23-10= 66+34= 20+26= 45-43= 21+35= 5+91= 34-13= 65-23= 48+7= 47-16= 27+34= 100-28= 21+55= 25+58= 89-67= 37+47= 44-31= 49+25= 5+48= 42+2= 59+3= 97-7= 96-43= 48-17= 16-14= 50+23= 92-63= 17+11= 30+41= 68+6= 48-47= 50+18= 67+12= 43+12= 53+22= 63+10= 65-21= 46-28= 16+70= 59-38= 23+24= 83-22= 46-29= 23-6= 8+72= 57-44= 12+58= 80-6= 9+54= 94-25= 99-45= 68-6= 51-49= 20+55= 7+15= 59-5= 32-9= 23+41= 12+75= 81+18= 92-83= 74-49= 95-75= 24-13= 39-13= 55-16= 17+3= 78+4= 81-2= 72+10= 41+39= 89-88= 74-33= 47+35= 79+8= 36+22= 92-66= 93-8= 91-11= 58-12= 61+25= 56-11= 42+20= 92-36= 80-12= 35+20= 65-59= 33+58= 100-44= 14+14= 32+64= 48+13= 39-4= 71-58= 96-38= 57+13= 89-54= 33-17= 18-11= 24+53= 91-9= 48-25=

C语言一元多项式计算

C语言一元多项式计算集团标准化工作小组 #Q8QGGQT-GX8G08Q8-GNQGJ8-MHHGN#

#include <> #include <> #include <> #define LEN sizeof(node) //结点构造 typedef struct polynode { int coef; //系数 int exp; //指数 struct polynode *next; }node; node * create(void) { node *h,*r,*s; int c,e; h=(node *)malloc(LEN); r=h; printf("系数:"); scanf("%d",&c); printf("指数:"); scanf("%d",&e); while(c!=0) { s=(node *)malloc(LEN); s->coef=c; s->exp=e; r->next=s; r=s; printf("系数:"); scanf("%d",&c); printf("指数:"); scanf("%d",&e); } r->next=NULL; return(h);

} void polyadd(node *polya, node *polyb) { node *p,*q,*pre,*temp; int sum; p=polya->next; q=polyb->next; pre=polya; while(p!=NULL&&q!=NULL) { if(p->exp>q->exp) { pre->next=p; pre=pre->next; p=p->next; } else if(p->exp==q->exp) { sum=p->coef+q->coef; if(sum!=0) { p->coef=sum; pre->next=p;pre=pre->next;p=p->next; temp=q;q=q->next;free(temp); } else { temp=p->next;free(p);p=temp; temp=q->next;free(q);q=temp; } } else { pre->next=q; pre=pre->next; q=q->next; } } if(p!=NULL) pre->next=p; else pre->next=q; } void print(node * p) {

一元多项式的计算数据结构课程设计

一元多项式的计算—加,减 摘要(题目)一元多项式计算 任务:能够按照指数降序排列建立并输出多项式; 能够完成两个多项式的相加、相减,并将结果输入; 目录 1.引言 2.需求分析 3.概要设计 4.详细设计 5.测试结果 6.调试分析 7.设计体会 8.结束语 一:引言: 通过C语言使用链式存储结构实现一元多项式加法、减法和乘法的运算。按指数

降序排列。 二:需求分析 建立一元多项式并按照指数降序排列输出多项式,将一元多项式输入并存储在内存中,能够完成两个多项式的加减运算并输出结果 三:概要设计 存储结构:一元多项式的表示在计算机内可以用链表来表示,为了节省存储空间,只存储多项式中系数非零的项。链表中的每一个结点存放多项式的一个系数非零项,它包含三个域,分别存放该项的系数、指数以及指向下一个多项式项结点的指针。创建一元多项式链表,对一元多项式的运算中会出现的各种可能情况进行分析,实现一元多项式的相加、相减操作。 1.单连表的抽象数据类型定义: ADT List{ 数据对象:D={ai|ai∈ElemSet,i=1,2,…,n,n≥0} 数据关系:R1={| ai-1, ai∈D,i=2,…,n} 基本操作: InitList(&L) //操作结果:构造一个空的线性表 CreatPolyn(&L) //操作结果:构造一个以单连表存储的多项试 DispPolyn(L) //操作结果:显示多项试 Polyn(&pa,&pb) //操作结果:显示两个多项试相加,相减的结果 } ADT List 2.本程序包含模块: typedef struct LNode //定义单链表 { }LNode,*LinkList; void InitList(LinkList &L) //定义一个空表 { } void CreatPolyn(LinkList &L) //用单链表定义一个多项式 { } void DispPolyn(LinkList L) //显示输入的多项式

100以内加减法练习题-附答案

6+42=16+56=90+3=55-27=48+39=3+68=3+66=95-11=14+64=38-10=8+20=76-45=81-46=64+31=20+78=79-28=59+10=65+8=81-73=45+30=75-28=70-54=3+91=97-90=31+57=47+29= 81-34= 56-48= 12+48= 68+24= 80-44= 93-21= 14+47= 37+63= 42+35= 21+50= 68-39= 82-3= 64-14= 1+27= 21+19= 47-10= 66+2= 77-60= 44-25= 20-4= 37+49= 59+37= 93-65= 49-39= 34+62= 13+77= 53-23= 46+27= 24+12= 4+29= 27-10= 73+7= 76-19= 22+6= 70-58= 81+19= 46-8= 80-53= 40-27= 48-40= 68-50= 39+21= 2+19= 82-49= 7+41= 74-41= 69+6= 87-20= 50+21= 26+65= 32+5= 23+4= 29-2= 52+25= 32-16= 78-73= 32+35= 31+21= 97-42= 83-59= 92-43= 34-10= 2+58= 75-33= 61+11= 79-48= 73-49= 49-35= 51+38= 25+8= 98-48= 46+32= 83-33= 33-12=

80-5=42-7=21+68=62-42=2+44=99-16=14+66=68-18=60+17=28+50=72+2=24+63=17+81=95-62=5+26=58+3=6+54=89-80=39+48=31+8=99-67=69-30=14+16=34+11=31+29=59-9= 23+46= 68-3= 98-33= 94-76= 3+48= 32+10= 24+19= 42-11= 2+64= 16+67= 73-39= 87-31= 73-31= 36+6= 12+14= 92-17= 15+43= 71-9= 16+67= 9+61= 29+69= 60+20= 61-32= 23+42= 75+16= 57-7= 19+40= 59-39= 97-5= 53-11= 34+54= 51-31= 40+36= 55+3= 60-42= 46+5= 28+37= 21-7= 12+25= 58+19= 43+42= 37+23= 88-34= 38+49= 37+50= 22+11= 4+41= 75+25= 98-21= 12+39= 94-52= 35+31= 63-34= 69+14= 90-80= 22-12= 89-81= 98-90= 53+3= 87-45= 50-13= 79-42= 69-16= 80-75= 14-5= 73-48= 12+28= 45-35= 42-2= 92-3= 46+49= 7+35= 64-11= 27+57=

一元多项式的运算

数据结构课程设计实验报告 专业班级: 学号: 姓名: 2011年1月1日

题目:一元多项式的运算 1、题目描述 一元多项式的运算在此题中实现加、减法的运算,而多项式的减法可以通过加法来实现(只需在减法运算时系数前加负号)。 在数学上,一个一元n次多项式P n(X)可按降序写成: P n(X)= P n X^n+ P(n-1)X^(n-1)+......+ P1X+P0 它由n+1个系数惟一确定,因此,在计算机里它可以用一个线性表P来表示: P=(P n,P(n-1),......,P1,P0) 每一项的指数i隐含在其系数P i的序号里。 假设Q m(X)是一元m次多项式,同样可以用一个线性表Q来表示: Q=(q m,q(m-1),.....,q1,q0) 不是一般性,假设吗吗m

一元多项式计算问题课程设计

长沙学院课程设计说明书 题目一元多项式计算问题系(部) 计算机系 专业(班级) 10级软件D班 姓名向栋良 学号2010022D08 指导教师邓旭东 起止日期2011.9.4-2011.9.8

课程设计任务书 课程名称:数据结构与算法 设计题目:一元多项式计算问题 已知技术参数和设计要求: 问题描述: 设计一个稀疏多项式简单计算器 基本要求: (1)输入并分别建立多项式A和B (2)输入输出多项式,输出形式为整数序列:n,c1,e1,c2,e2……,其中n是多项式的项数,ci和ei是第i项的系数和指数,序列按指数降序排列 (3)完成两个多项式的相加、相减,并将结果输出; 测试数据: (1) A+B A= 3x14-8x8+6x2+2 B=2x10+4x8+-6x2 (2) A-B A=11x14+3x10+2x8+10x6+5 B=2x14+3x8+5x6+7 (3) A+B A=x3+x1B=-x3-x1 (4) A+B A=0 B=x7+x5+x3+x1 (5) A-B A=100x100+50x50+20x20+x B=10x100+10x50+10x20+x 选作内容: (1).多项式在x=1时的运算结果 (2)求多项式A和B的乘积 设计工作量: 40课时 日期节次地点设计方式9月4日(周日)1-4 科1408 讲授内容 9月4日(周日)5-8 科1608 答疑 9月5日(周一)1-4科1408上机调试 9月5日(周一)5-8 科1608 答疑 9月6日(周二)1-4科1408上机调试 9月6日(周二)5-8 科1608 答疑 9月7日(周三)1-4科1408上机调试 9月7日(周三)5-8 科1608 答疑 9月8日(周四)1-4科1608答疑 9月8日(周四)5-8 科1408 答辩

一元多项式计算器

一元多项式计算器 目录 摘要 (1) 1绪论 (1) 2系统分析 (1) 2.1功能需求 (1) 2.2数据需求 (1) 2.3性能需求 (1) 3总体设计 (2) 3.1系统设计方案 (2) 3.2功能模块设计 (2) 4详细设计 (3) 4.1建立多项式 (4) 4.2多项式相加 (4) 4.3多项式相减 (5) 4.4多项式相乘 (5) 4.5计算器主函数 (6) 5调试与测试 (7) 5.1调试 (7) 5.2测试 (8) 6结论 (9) 结束语 (9) 参考文献 (9) 附录1-用户手册 (10) 附录2-源程序 (12)

摘要 随着生活水平的提高,现代科技也日益发达。日常生活中多位计算再所难免,因此设计一个简单计算器可解决许多不必要的麻烦。 开发这样一个程序主要运用了C的结点,链表等方面知识。系统主要实现了多项式的建立,多项式的输入输出,以及多项式加减乘等运算。 报告主要从计算器的程序段,对输入输出数据的要求,计算器的性能,以及总体的设计来介绍此计算器程序的实现过程。 关键词:多项式;链表;结点 1绪论 随着日益发达的科技,计算器已应用于各行各业。设计一个计算器需要运用C中多方面知识,更是以多项式的建立,输入输出,以及结点,链表为主。(扩充) 任务书。。。。。 2系统分析 2.1 功能需求 多项式的建立多项式输入输出多项式加减乘等运算 2.2数据需求 在输入过程中,首先要确定输入的数据,数据不能是字母,只能是数字。不能连续输入数据,必须按要求配以空格输入要计算的数据。 (1) 链节节点数字 (2) 数字 2.3 性能需求 系统必须安全可靠,不会出现无故死机状态,速度不宜过慢。

数据结构 一元多项式的计算

项目一一元多项式的计算问题 1.1设计题目与要求 1.1.1设计题目 1)一元多项式计算 任务:能够按照指数降序排列建立并输出多项式;能够完成两个多项式的相加、相减,并将结果输入; 基本要求:在上交资料中请写明:存储结构、多项式相加的基本过程的算法(可以使用程序流程图)、源程序、测试数据和结果、算法的时间复杂度、另外可以提出算法的改进方法;本程序关键点是如何将输入的两个多项式相加、相减操作。 ①如何将输入的一元多项式按指数的降序排列 ②如何确定要输入的多项式的项数; ③如何将输入的两个一元多项式显示出来。 ④如何将输入的两个一元多项式进行相加操作。 ⑤如何将输入的两个一元多项式进行相减操作。 本程序是通过链表实现一元多项式的相加减操作。 1.1.2、任务定义 此程序需要完成如下的要求:将多项式按照指数降序排列建立并输出,将两个一元多项式进行相加、相减操作,并将结果输入。 a:输入多项式的项数并建立多项式; b:输出多项式,输出形式分别为浮点和整数序列,序列按指数升序排列; c:多项式a和b相加,建立多项式a+b; d:多项式a和b相减,建立多项式a-b。 e:多项式的输出。 1.2 数据结构的选择和概要设计: 1.2.1数据结构的选用 A:基于链表中的节点可以动态生成的特点,以及链表可以灵活的添加或删除节点的数据结构,为了实现任意多项式的加法,减法,因此选择单链表的结构体,它有一个系数,指数,下一个指针3个元属;例如,图1中的两个线性链表分别表示一元多项式 和一元多项式。从图中可见,每个结点表示多项式中的一项。

图1 多项式表的单链存储结构 B:本设计使用了以下数据结构: typedef struct node{ int xs; /*系数*/ int zs; /*指数*/ struct node * next; /*next指针*/ }Dnode,* Dnodelist; C:设计本程序需用到八个模块,用到以下八个子函数如下: 1.Dnodelist Creat_node(void) /*链表初始化*/ 2.int Insert_node(Dnodelist D,int xs,int zs) /*插入函数*/ 3.Dnodelist Creat_Dmeth(int length) /*创建多项式*/ 4.Dnodelist Addresult(Dnodelist D1,Dnodelist D2) /*多项式相加*/ 5.Dnodelist Subresult(Dnodelist D1,Dnodelist D2) /*多项式相减*/ 6.Dnodelist select(Dnodelist D1,Dnodelist D2) /*选择函数*/ 7void Show(Dnodelist D) /*显示(输出)函数*/ 8void main()主程序模块调用链一元多项式的各种基本操作模块。 1.2.2 多项式的输入 先输入多项式的项数,采用尾插法的方式,输入多项式中一个项的系数和指数,就产生一个新的节点,建立起它的右指针,并用头节点指向它; 1.2.3 两个多项式的加法 “和多项式”链表中的结点无需另生成,而应该从两个多项式的链表中摘取。其运算规则如下: 假设指针A和B分别指向多项式a和多项式b中当前进行比较的某个结点,则比较两个结点中的指数项,有下列3种情况: ①指针A所指结点的指数值<指针B所指结点的指数值,则应摘取A指针所指结点插入到“和多项式”链表中去; ②指针A所指结点的指数值>指针B所指结点的指数值,则应摘取指针A所指结点插入到“和多项式”链表中去; ③指针A所指结点的指数值=指针B所指结点的指数值,则将两个结点中的系数相加, 若和数不为零,则修改A所指结点的系数值,同时释放B所指结点;反之,从多项式A的链表中删除相应结点,并释放指针A和B所指结点。例如,由图2中的两个链表表示的多项式相加得到的“和多项式”链表如图2所示,图中的长方框表示已被释放的结点。

一元多项式计算(数据结构课程设计)

一元多项式计算(数据结构课程设计)

一、系统设计 1、算法思想 根据一元多项式相加的运算规则:对于两个一元多项式中所有指数相同的项,对应指数相加(减),若其和(差)不为零,则构成“和(差)多项式”中的一项;对于两个一元多项式中所有指数不相同的项,则分别写到“和(差)多项式”中去。 因为多项式指数最高项以及项数是不确定的,因此采用线性链表的存储结构便于实现一元多项式的运算。为了节省空间,我采用两个链表分别存放多项式a 和多项式b,对于最后计算所得的多项式则利用多项式a进行存储。主要用到了单链表的插入和删除操作。

(1)一元多项式加法运算 它从两个多项式的头部开始,两个多项式的某一项都不为空时,如果指数相等的话,系数就应该相加;相加的和不为零的话,用头插法建立一个新的节点。P 的指数小于q的指数的话就应该复制q的节点到多项式中。P的指数大于q的指数的话,就应该复制p节点到多项式中。当第二个多项式空,第一个多项式不为空时,将第一个多项式用新节点产生。当第一个多项式空,第二个多项式不为空时,将第二个多项式用新节点产生。 (2)一元多项式的减法运算 它从两个多项式的头部开始,两个多项式的某一项都不为空时,如果指数相等的话,系数就相减;相加的和不为零的话,用头插法建立一个新的节点。p的指数小于q的指数的话,就应该复制q的节点到多项式中。P的指数大于q的指数的话就应该复制p的节点到多项式中,并且建立的节点的系数为原来的相反数;当第二个多项式空,第一个多项式不为空时,将第一个多项式用新节点产生。当第一个多项式空,第二个多项式不为空时,将第二个多项式用新节点产生,并且建立的节点的系数为原来的相反数。 2、概要设计 (1)主函数流程图: (注:a代表第一个一元二次方程,b代表第二个一元二次方程)

100以内加减法练习题

姓名班级时间 9 + 22 = 38 + 2 = 35 + 7= 80+20 = 6+27 = 36 + 7 = 30+56 = 40+26 = 23 + 8 = 2 + 28 = 9 + 72 = 23+60 = 4 + 58 = 8 + 15 = 50 + 4 = 8 + 64 = 8 + 83= 6 + 85 = 9 + 80 = 25 + 7 = 29 + 3 = 7 + 38 = 20 + 30 = 20 + 6 = 77 + 8 = 53 + 8 = 76 + 9 = 6 + 53 = 16 + 5 = 19 + 5 = 6 + 55 = 3 7 + 4 = 3 + 4 8 = 35 + 8 = 3 + 4 9 = 59 + 6 = 6 + 55 = 9 + 53 = 28 + 6 = 27 + 6 = 8 + 66 = 3 + 28 = 49 + 4 = 47 + 4 = 56 + 8 = 86 + 5 = 9 + 21 = 8 + 25 = 3 + 69 = 36 + 6 = 47 + 2 = 2 + 57 = 9 + 56 = 29 + 5 = 44 + 8 = 32+9= 58+7= 4+78= 8+47= 79+3=

姓名班级时间 60 – 3 = 80 – 2 = 50 –7 = 60 – 5 = 80 – 3 = 80 – 9 = 30 – 3 = 70 – 3 = 80– 8 = 60 – 2 = 70 – 1 = 60 – 4= 80 – 5 = 70 – 6 = 80 – 4 = 21 – 2 = 75 – 7 = 67– 9 = 57 – 8 = 83 – 5 = 31 – 3 = 32 – 3 = 56 – 8 = 48 – 9 = 84 – 5 = 52 – 3 = 76 – 7 = 53 – 5 = 57– 9 = 41 – 2 = 72 – 7 = 92 – 7 = 81 – 4 = 58 – 9 = 72 – 5 = 43 – 4 = 91 – 4 = 84 – 5 = 75 – 6 = 71 – 5 = 83 – 4 = 72 – 7 = 64 – 6 = 75 – 9 = 64 – 6 = 56 – 7 = 84 – 8 = 81 – 2 = 98 – 9 = 66 – 8 = 76 – 8 = 86 – 7 = 43 – 4 = 66– 7 = 97 – 8 = 68-9= 54-6= 85-8= 46-7= 82-5=

100以内加减法口算题500道

100以内加减法口算题500道

71-43=72-67=89-30=69+3=93-90=44+17=7-4=100-84=18+39=97-23=18+76=100-78=91-52=21+45=75-33=67+30=7-1= 88-69= 16+74= 75+11= 73+9= 96-39= 100-99= 61+38= 72-37= 81-36= 7+81= 16+76= 86-83= 54+39= 55+27= 52+8= 91-57= 73+6= 67+19= 45-42= 29+36= 100-40= 46+40= 21+64= 51-40= 50-22= 8+69= 45+16= 44-34= 8-8= 81-9=

7-3=29-7=37-10=29-14=80+19=82-12=80-43=27+37=47+36=50-27=56-26=51+25=78-8=50+13=59-11=8+80=75-56= 42+13= 12+61= 39+42= 79-26= 72-60= 26+27= 62-46= 94-7= 63+23= 86-34= 75-71= 55-50= 88-78= 67-53= 38-28= 23+74= 39+49= 36-8= 62-40= 94-5= 100-84= 45-24= 56+25= 71-7= 39+28= 6+78= 13+53= 99-90= 82-1= 77-5= 82-15=

2-2=31+20=57+9=62+4=81-2=16+38=39+28=68-16=41+44=35+17=98-2=49-21=96-9=34+41=49-43=48-25=70-44= 4+70= 26+35= 93-40= 87+10= 31+67= 73-10= 78+14= 83-54= 58-27= 40-18= 80-9= 84-11= 99-80= 37+45= 85-44= 51-50= 58+27= 87+12= 28-26= 89-68= 98-16= 96-26= 47-23= 99-61= 38-26= 28-18= 6+86= 67-10= 76-3= 73+1= 88-28=

数据结构实验报告-一元多项式

数据结构课程设计报告 课题: 一元多项式 姓名: XX 学号: 201417030218 专业班级: XXXX 指导教师: XXXX 设计时间: 2015年12月30日星期三

目录 一、任务目标 (3) 二、概要设计 (4) 三、详细设计 (6) 四、调试分析 (8) 五、源程序代码 (8) 六、程序运行效果图与说明 (15) 七、本次实验小结 (16) 八、参考文献 (16)

一丶任务目标 分析 (1) a.能够按照指数降序排列建立并输出多项式 b.能够完成两个多项式的相加,相减,并将结果输入 要求:程序所能达到的功能: a.实现一元多项式的输入; b.实现一元多项式的输出; c.计算两个一元多项式的和并输出结果; d.计算两个一元多项式的差并输出结果; 除任务要求外新增乘法: 计算两个一元多项式的乘积并输出结果 (2)输入的形式和输入值的范围: 输入要求:分行输入,每行输入一项,先输入多项式的指数,再输入多项式的系数,以0 0为结束标志,结束一个多项式的输入。 输入形式: 2 3 -1 2 3 0 1 2 0 0 输入值的范围:系数为int型,指数为float型 (3)输出的形式: 第一行输出多项式1; 第二行输出多项式2; 第三行输出多项式1与多项式2相加的结果多项式; 第四行输出多项式1与多项式2相减的结果多项式; 第五行输出多项式1与多项式2相乘的结果多项式

二、概要设计 程序实现 a. 功能:将要进行运算的二项式输入输出; b. 数据流入:要输入的二项式的系数与指数; c. 数据流出:合并同类项后的二项式; d. 程序流程图:二项式输入流程图; e. 测试要点:输入的二项式是否正确,若输入错误则重新输入。

相关文档
最新文档