数据结构实验一一元多项式相加
一元多项式的加法数据结构
一元多项式的加法数据结构
一元多项式是数学中常见的一种代数表达式形式,由多个单项式按照一定的规则相加而成。在计算机科学中,为了方便对一元多项式进行处理,需要定义一种合适的数据结构来表示和操作一元多项式的加法运算。
一元多项式的加法数据结构可以使用链表来实现。每个节点表示一个单项式,包含两个成员变量:系数和指数。系数表示单项式的系数,指数表示单项式的指数。通过将多个单项式的系数和指数组织成一个链表,即可表示一个一元多项式。
在链表中,每个节点按照指数从小到大的顺序排列。这样可以方便进行多项式的加法运算。当两个一元多项式相加时,只需按照指数的大小依次比较两个链表中的节点,并根据指数的大小关系进行相应的操作。
具体的加法算法如下:
1. 创建一个新的链表作为结果链表。
2. 初始化两个指针分别指向两个原始链表的头节点。
3. 循环比较两个链表中的节点,直到其中一个链表遍历完为止。
4. 比较当前节点的指数大小关系:
- 如果两个节点的指数相等,将它们的系数相加,并将结果添加到结果链表中。
- 如果第一个链表中的节点指数较小,将第一个链表的节点添加到结果链表中,并将指针指向下一个节点。
- 如果第二个链表中的节点指数较小,将第二个链表的节点添加到结果链表中,并将指针指向下一个节点。
5. 当其中一个链表遍历完后,将另一个链表中剩余的节点依次添加到结果链表中。
6. 返回结果链表作为两个一元多项式相加的结果。
通过上述算法,可以实现对一元多项式的加法运算。这种链表结构的一元多项式加法数据结构具有以下优点:
- 灵活性:可以表示任意长度的一元多项式,不受固定数组长度的限制。
数据结构-多项式相加
数据结构课程设计
2012年12月
班级:XXX
学号:XXX
姓名: XXX
指导教师:XXX
一元稀疏多项式计算器
【问题描述】
设计一个一元稀疏多项式简单计算器
【基本要求】
一元多项式简单计算器的基本功能是:
1,输入并建立多项式;
2,输出多项式,输出形式为整数序列:n,c1,e1,c2,c2,...,cn,en,其中n是多项式的项数,ci和ei分别是第i项的系数和指数,序列按指数降序排列;
3,多项式a和b相加,建立多项式a+b;
4,多项式a和b相减,建立多项式a-b.
【算法设计思想】
①一般情况下的一元n次多项式可写成pn(x)=p1xe1+p2xe2+……+pmxem
其中,p1是指数为ei的项的非零系数,且满足0≦e1
((p1,e1),(p2,e2),……,(pm,em))便可惟一确定多项式pn(x)。
②用两个带表头结点的单链表分别存储两个多项式
③根据一元多项式相加的运算规则:对于两个一元多项式中所有指数相同的项,对应系数相加,若其和不为零,则构成“和多项式”中的一项;
④只需要将第二个多项式的系数改为其相反数,然后根据一元多项式相加的运算规则便可以得到其相应的“差多项式”
【
【实现提示】
用带表头结点的单链表存储多项式。
【程序代码】
#include
#include
typedef struct node
{
float coef;
int expn;
struct node *next;
}Lnode, *polynmial;
void create(polynmial &L); //输入并建立多项式L
void display(polynmial L); //显示,输出多项式L
数据结构实验╲t多项式加法
实验一:完成多项式的相加运算(验证性、4学时)
一、实验目的和要求
完成多项式的相加、相乘运算。
(1)掌握线性表的插入、删除、查找等基本操作设计与实现
(2)学习利用线性表提供的接口去求解实际问题
(3)熟悉线性表的的存储方法
二、实验内容和原理
1.实验内容
设计一个一元多项式的简单计算程序,其基本功能有:(1)输入并建立多项式;(2)输出多项式;(3)多项式的相加运算。利用单链表实现。(4) 多项式的相乘运算。
2.实验原理
使用单链表实现一元多项式的存储,并实现两个一元多项式的加法运算。
三、实验环境
硬件:(1)学生用微机(2)多媒体教室或远程教学(3)局域网环境
软件:(1)Windows XP中文操作系统(2)Turbo C 3.0或者VC6.0
四、算法描述及实验步骤
1、描述
对于两个多项式,将它们分别存入两个循环链表中,从两个多项式的链表的第一个元素结点开始检测,对每一个结点做如下操作:
(1)若两个多项式中对应结点的指数值相等,则将它们的系数相加。如果相加结果不为零,则形成一个新结点后链入新链表的末尾。然后再检测两个链表中的下一个结点。
(2)若两个多项式中对应结点的指数值不相等,则复抄指数值大的那个结点中的指数值与系数值,形成一个新结点后链入(1)中所述的链表尾。然后再检测指数值小的链表中的当前结点与指数值大的链表中的下一个结点。
上述过程一直做到两个链表中的链表中的所有结点均检测完为止。
2、算法流程图
begin
scanf
NODE *Creat(int n)
-1 0 1
Y N
3、代码(注释)
#include
一元多项式相加问题实验报告
一元多项式相加问题实验报告
一元多项式相加问题一、问题描述通过键盘输入两个形如P 0 +P 1 X 1 +P 2 X 2 +…+P n X 的多项式,经过程序运后在屏幕上输出它们的相加和。
二、数据结构设计一个一元多项式的每一个子项都由“系数-指数”两部分组成,因此可将其抽象为包含系数coef、指数exp、指针域next 构成的链式线性表。将两个多项式分别存放在两个线性表中,然后经过相加后将所得多项式存放在一个新的线性表中,但是不用再开辟新的存储空间,只依靠结点的移动来构成新的线性表,期间可以将某些不需要的空间回收。基于这样的分析,可以采用不带头结点的单链表来表示一个一元多项式。具体数据类型定义为:
struct node {
float coef;
//系数域
int exp;
//指数域
struct node *next; }; 三、功能函数设计1、输入多项式的系数和指数初始化多项式的功能模块具体函数为node *in_fun() 此函数的处理较为全面,要求用户按照指数递增的顺序
和一定的输入格式输入各个系数不为0 的子项,输入一个子项建立一个相关结点,当遇到输入结束标志时停止输入。关键步骤具体如下:
⑴控制用户按照指数递增的顺序输入
r=a; while(r!=q-next)
{
if(y=r-exp)
{
cout“请按照指数递增顺序输入,请重新输入“;
cinxy;
break;
}
r=r-next;
} 从头开始遍历,若遇到目前输入的指数不是最大时,就跳出循环,让用户重新输入。
⑵当输入的系数为零时,不为其分配存储空间存储while(x==0) { cinxy; continue;} 即若系数为0,不再进行动态分配并新建结点,而是重新提取用户输入的下一个子项的系数和指数,利用continue 进入下一次循环。
实验一 多项式求和
韶关学院
学生实验报告册
实验课程名称:数据结构与算法
实验项目名称:实验一多项式求和
实验类型(打√):(基础、综合、设计√)
院系:计算机科学学院专业:计算机科学技术姓名:*** 学号:*****
指导老师:***
韶关学院教务处编制
一、实验预习报告内容
二、实验原始(数据)记录
实验时间:2011 年9 月21 日(星期三第7,8 节)
实验同组人:
【程序运行结果】
运行结果1:
运行结果2:
通过分析输入数据和运行结果,证明程序顺利完成实验内容和要求。
指导教师
批阅及签名签名:年月日
三、实验报告内容
2011年9 月21 日
注:1、如有个别实验的实验报告内容多,实验报告册页面不够写,或有识图,画图要求的,学生应根据实验指导老师要求另附相同规格的纸张并粘贴在相应的“实验报告册”中。
2、实验报告册属教学运行材料,院系(中心)应按有关规定归档保管。
一元多项式问题
一元多项式相加问题
本实验的目的是进一步熟练掌握应用链表处理实际问题的能力。
一、问题描述:
一元多项式相加是通过键盘输入两个形如p0+p1*x^1+p2*x^2+pn*x^n的多项式,经过程序运算后在屏幕上输出它们的相加和。
二、数据结构设计:
分析任意一元多项式的描述方法可知,一个一元多项式的每一个子项都有“系数—指数”两部分组成,所以可以将它抽象成一个有“系数—指数对”构成的线性表,由于对多项式中系数为0的子项可以不记录它的指数值,对于这样的情况就不再付出存储空间来存放它了。基于这样的分析,可以采用一个带有头结点的单链表来表示一个一元多项式。具体数据类型定义为:
typedef struct node{
float coef;
int exp;
int flag;
struct node *next;
}PolyNode;
三、功能(函数)设计:
1、输入并建立多项式的功能模块
PolyNode * create(){
float A;
int B;
PolyNode *a=NULL;
PolyNode *b=NULL;
PolyNode *c=NULL;
scanf("%f,%d",&A,&B);
while(A!=0||B!=0){
if(A!=0){
c=new PolyNode;
c->coef=A;
c->exp=B;
c->flag=0;
c->next=NULL;
if(a==NULL){
a=c;
b=a;
}
else{
b->next=c;
b=c;
}
}
scanf("%f,%d",&A,&B);
}
return a;
}
2、多项式相加的功能模块
数据结构一元多项式的运算
数据结构一元多项式的运算数据结构一元多项式的运算
1、引言
1.1 研究背景
1.2 研究目的
2、一元多项式的定义
2.1 一元多项式的概念
2.2 一元多项式的表示方法
2.3 一元多项式的次数和系数
2.4 一元多项式的零多项式和常数项
2.5 一元多项式的加法运算
2.6 一元多项式的减法运算
2.7 一元多项式的乘法运算
3、一元多项式的特殊运算
3.1 一元多项式的乘方运算
3.2 一元多项式的取余运算
3.3 一元多项式的求导运算
3.4 一元多项式的积分运算
3.5 一元多项式的复合运算
4、一元多项式的应用
4.1 一元多项式在数学中的应用
4.2 一元多项式在计算机科学中的应用
4.3 一元多项式在工程领域中的应用
5、实例分析
5.1 实例一:一元多项式的相加减
5.2 实例二:一元多项式的乘法运算
5.3 实例三:一元多项式的特殊运算应用
6、结论
附件:
附件一:一元多项式的代码实现示例
法律名词及注释:
1.一元多项式: 指仅有一个未知数的多项式。
2.多项式的次数: 多项式中各项最高次幂的次数。
3.多项式的系数: 多项式中各项中未知数的系数。
4.零多项式: 所有系数均为0的多项式。
5.常数项: 多项式中次数为0的项,即常数项。
6.多项式的加法运算: 将两个多项式相同次项的系数相加。
7.多项式的减法运算: 将两个多项式相同次项的系数相减。
8.多项式的乘法运算: 将两个多项式的各项相乘,并根据指
数相加合并同类项。
9.多项式的乘方运算: 将一个多项式自乘n次。
10.多项式的取余运算: 两个多项式相除后的余数部分。
11.多项式的求导运算: 对多项式中的每一项进行求导操作。
数据结构_一元多项式的表示与相加
实验一一元多项式的表示与相加
实验目的:
1.复习并熟练掌握数据结构所使用的程序设计语言——C语言;
2.学会单步跟踪、调试自己的程序;
3.加深对线性表特别是链表知识的理解和掌握,并能够运用相关知识来解决相关的具体问题,如一元多项式相加等;
程序流程:
1.定义一元多项式链表结构体类型;
2.输入多项式项数以分配存储空间;
3.输入多项式每项的系数和指数,将其插入当前多项式链表。同时判断是否有与当前节点指数相同的项,若存在,则将两项系数相加合并。此外,若存在系数为0的项,将其存储空间释放;
4.进行多项数加法时,新建一个存储结果的链表,分别将两多项式各项依次插入结果多项式即完成多项式相加运算;
5.进行多项数加法时,将减项多项式各项系数化为相反数后进行加法操作,即完成多项式相减运算;
6.对x赋值后,将x值代入多项式进行运算得到多项式的值;
7.输出多项式。
注意:进行完一次运算以后,应该及时销毁无用多项式以释放空间以便再次应用。
算法及注释:
1)定义一元多项式链表结构体类型
typedef struct Lnode{
float cof; //定义系数
int exp; //定义指数
struct Lnode *next; //定义指针变量指向下一个节点
}Lnode ,*Linklist; //定义新的变量类型
2)建立多项式存储线性链表头结点
void makehead(Linklist &head){
head=(Linklist)malloc(sizeof(Lnode)); //建立新的节点
head->exp=-1;
一元多项式的相加(数据结构)
实验报告
课程名称:数据结构实验名称:一元多项式的相加
班级: 1333 学生姓名:蔡景旺学号: 37
一、需求分析
1.用户可以根据自己的需求分别输入两个一元多项式(输入必须按指数递增顺序),并且
能够实现输入的一元多项式的显示。
2.能够完成两个一元多项式的相加功能并显示结果。
3.程序执行的命令包括:
(1)构造链表A (2)构造链表B (3)两个链表的相加(4)求链表的长度(5)打印(显示)已有的链表
二、概要设计
⒈为实现上述算法,需要线性表的抽象数据类型:
ADT Polynomial {
数据对象:D={a i:|a i∈TermSet,i=1…n,n≥0
TermSet 中的每个元素包含一个表示系数的实数和表示指数的整数} 数据关系:R1={<a i-1,a i>|a i-1,a i∈D,且a i-1中的指数值< a i中的指数值
i=2,…n≥0}
基本操作:
CreatPolyn(&p,m)
操作结果:输入m项的系数和指数,建立一个一元多项式P。
DestroyPolyn(&p)
初始条件:一元多项式P已存在。
操作结果:销毁一元多项式P。
PrintPolyn(P)
初始条件:一元多项式P已存在。
操作结果:打印输出一元多项式P。
PolynLength(P)
初始条件:一元多项式P已存在。
操作结果:返回一元多项式中P的项数。
AddPolyn(&Pa,&Pb)
初始条件:一元多项式Pa和Pb已存在。
操作结果:完成一元多项式相加运算,即:Pa=Pa+Pb,销毁一元多项式Pb.
}ADT Polynomail
数据结构实验报告-一元多项式的加法运算
问题描述:
设P
n (x)和Q
m
(x)分别两个一元多项式。试编写程序实现一元多
项式的加法运算。
一、需求分析:
1、本程序需要基于线性表的基本操作来实现一元多项式的加法,也可以用数组实现。
2、两个多项式都有键盘输入相应的系数和指数。
3、//第一个多项式为9x15+ 7x8+5x3+3x
输入
4 //表示第一个多项式的项数
9, 15(回车) //表示9x15
7, 8 (回车)
5, 3 (回车)
3, 1 (回车)
输出
9x^15+ 7x^8+5x^3+3x^1
//第二个多项式为 -7x8+6x3+2
输入
3 //表示第二个多项式的项数
6, 3(回车) //表示9x15
-7, 8(回车)
2, 0 (回车)
输出
-7x^8+ 6x^3+2x^0
求和结果
9x^15+11x^3+3x^1+ 2x^0
二、概要设计:
抽象数据类型
为实现上述程序的功能,应以整数存储用户的输入,以及计算的结果。
实现多项式的运算,利用数组的方式需开辟一个二维数组,利用链表的方式须创造两个链表。
算法的基本思想
数组实现:
定义一个结构体数组,p存储系数,q存储指数。分别输出两次输入的多项式。将两次输入的多项式的指数按从大到小的顺序进行排列,同时相应的系数要进行交换。输出时如果进行判断。如果当前该项与下一项的的系数相同,将两项系数相
加后输出,并跳过下一项。
如果不相等,直接输出。
输出时需注意的问题:
当系数为0时,该项不输出
当系数为负数时,不要再在前面输出+。
程序的流程
程序由三个模块组成:
输入模块:完成两个多项式的输入。
处理模块:将多项式按其指数大小进行排列。
数据结构一元多项式求和实验报告
xx大学
xxx学院
算法与数据结构试验报告
设计名称:算法与数据结构
设计题目:链表的应用
学生学号:xx
专业班级:xx
学生姓名:xx
学生成绩:
指导教师(职称):
课题工作时间:2012年4月10日
说明:
实验课程类别:课程内实验
实验课程性质:必修
适用专业、年级:2010级计算机工程、计算机网络
开课院、系:计算机科学与工程学院计算机工程教研室
学时:18
编写依据:《算法与数据结构》实验教学大纲
修订时间:2012年2月
《算法与数据结构》课程实验指导书(以下简称:指导书)是针对计算机学院所开设的对应课程的上机实验而编写的教学文件,供学生上机实验时使用。
上机的工作环境要求:Windows 2000或以上操作系统、VC++ 6.0或者其它高级程序设计语言。
学生应按指导教师的要求独立完成实验,并按要求撰写实验报告。
每一个实验,编程上机调试并且提交电子文档实验报告,以学号姓名作为文件名上传。报告内容至少包含如下内容:
1、学生基本情况:专业班级、学号、姓名
2、实验题目、实验内容
3、设计分析
4、源程序代码
5、测试用例(尽量覆盖所有分支)
6、实验总结
一.实验内容与学时分配
一、试验课题
链表的应用
二、试验内容
一元多项式求和。把任意给定的两个一元多项式P(x),Q(x)输入计算机,计算它们的和并输出计算结果。
三、试验分析
系数指数
一元多项式链表的结点结构
四、源程序代码
#include<stdio.h> #include<stdlib.h> /*链表数据类型定义*/ typedef struct LNode {
数据结构多项式相加实验报告doc
数据结构多项式相加实验报告
篇一:数据结构实验多项式加法
数据结构实验报告
实验名称:多项式加减法
学号:1XX10419
姓名:林强
实验日期:XX.5.05
一、实验目的
通过实现多项式的加减法,对链表有更深入的了解
二、实验具体内容
1、实验题目1:
(1)题目设计一个一元稀疏多项式简单的加减法计算器
实
现要求:
一元稀疏多项式简单计算器的基本功能是:
(1)输入并建立多项式:
A(x)?7?3x?9x8?5x17;
B(x)?8x?22x7?9x8
(2)输出多项式
(3)多项式A和B相加,建立多项式C=A+B,并输出相加的结果多项式C
(4)选作:多项式A和B相减,建立多项式C=A-B,并输出相加的结果多项式D
(2)分析
1:本程序的任务是实现两个多项式的加法其中多项式的系数为浮点型,
指数为整数,输出的结果也为系数和指数。
(1)输入的形式和输入值的范围:
输入多项式的系数a和未知数X的指数b,当a和b都为零时,输入结束。输入值的范围:a为实数,b为整数。
(2)输出形式:输出多项式的系数和多项式未知数X 的指数即(a,b)形式。
(3)程序所能达到的功能,实现两个多项式的加法,并输出最后的结果
2:
整个程序运行期间实行动态创建节点,一边输入数据,一边创建节点当将全部数据输入到单链表中后再调用多项式加法这
个函数,并一边实现多项式的相加,一边释放节点,有效防止了
在程序反复运行过程中可能出现系统空间不够分配的现象
(3)实验代码
typedef int Status;
#define OVERFLOW -1
#define null 0
一元多项式
《数据结构课程设计》
报告
学号:
姓名:
年级:
专业:
指导老师:
完成日期:年月
目录
一、一元多项式的加法运算
1、实验内容
2、需求分析...........................................
3、概要设计...........................................
4、详细设计...........................................
5、调试分析...........................................
6、测试结果...........................................
7、用户使用说明.......................................
一元多项式计算
一、实验内容
一元多项式的计算的相加
二、需求分析
建立一元多项式并按照降幂输出多项式,将一元多项式输入并存储在链表中,能够完成两个多项式的加减运算并输出结果
1.输入的形式和输入值的范围:
(1)功能选择的输入必须是整型,输入值只能是1|2|3|4中的任一个数;
(2)系数的输入必须是实型,当输入非实型数据时,例如输入字母a时,程序会提示输入系数不合法,重新输入;
(2)输入的指数必须为整型,当输入的指数为浮点型如2.1时,程序会提示输入指数不合法,重新输入。
(3)多项式项数的输入形式必须是整形,输入值的范围大于等于0。
2.输出的形式:
(1)功能选择的输出形式,例:输入“1”,则输出“请输入多项式a的项数:”;
数据结构一元多项式的运算
数据结构一元多项式的运算
第一章引言
在计算机科学中,数据结构是研究非原子数据对象的组织、存
储和管理的科学和技术。一元多项式是代数中的基本概念之一,它
在计算机科学中有着广泛的应用。本文将介绍一元多项式的运算,
包括多项式的表示、加法、减法、乘法等操作。
第二章多项式的表示
1.稀疏数组表示法
稀疏数组表示法是一种常用的多项式表示方法。它通过一个数
组来存储多项式中非零项的指数和系数。数组的下标表示项的指数,数组元素表示项的系数。对于没有出现的指数,数组元素为零。
2.链表表示法
链表表示法是另一种常用的多项式表示方法。每个节点包含项
的指数和系数,并通过指针串接成链表。链表的节点可以按照指数
的升序或降序排列。
第三章多项式的加法
多项式的加法是指将两个多项式相加得到一个新的多项式。具
体操作如下:
1.根据多项式的表示方法,分别遍历两个多项式的非零项。
2.比较当前项的指数大小,如果两个指数相等,则将系数相加得到新的系数,并将结果加入结果多项式中。
3.如果一个多项式的指数大于另一个多项式的指数,则将该项加入结果多项式中。
4.重复以上操作,直到遍历完所有的非零项。
第四章多项式的减法
多项式的减法是指将两个多项式相减得到一个新的多项式。具体操作如下:
1.根据多项式的表示方法,分别遍历被减数和减数的非零项。
2.比较当前项的指数大小,如果两个指数相等,则将被减数的系数减去减数的系数得到新的系数,并将结果加入结果多项式中。
3.如果被减数的指数大于减数的指数,则将该项加入结果多项式中,并将被减数的系数变为相反数。
4.重复以上操作,直到遍历完所有的非零项。
数据结构:链表的应用-求两个一元多项式之和
} else if(p1->mi < p2->mi )
{ Pnode pnew = (Pnode)malloc(sizeof(Pnode));
if(NULL == pnew) {
精美文档
4
exit(-1); }
pnew->mi = p2->mi; pnew->xishu = p2->xishu;
!= NULL && p2 == NULL) || (p1 == NULL && p2 != NULL)) || p1 != NULL || p2 != NULL) { if(p1 == NULL && p2 != NULL) {
Pnode pnew = (Pnode)malloc(sizeof(Pnode)); if(NULL == pnew) { exit(-1); }
printf("\n"); }
int main(void) {
Pnode p1,p2; int a,b; char x;
printf("输入未知字母(如 x,y,z 等):"); scanf("%c",&x);
精美文档
5
printf("输入第一个多项式的项数:"); scanf("%d",&a); p1 = init(a);
【数据结构】一元多项式相加
【数据结构】一元多项式相加
#include<stdio.h>
//建立存储多元式的结点结构的单链表
typedef struct PloyNode
{
float xishu; /*多项式的系数*/
int zhishu; /*指数*/
struct PloyNode *next; /*next是struct PloyNode类型中的一个成员,它又指向
struct PloyNode类型的数据,以此建立链表*/
}PloyNode;
/*指针函数,返回指针类型;用尾插法建立一元多项式的链表的函数*/
PloyNode *create()
{
PloyNode *h,*r,*s;
float xishu;
int zhishu;
/*建立多项式的头结点,为头结点分配存储空间*/
h=(PloyNode *)malloc(sizeof(PloyNode));
/*r指针始终动态指向链表的当前表尾,以便于做尾插入,其初值指向头结点*/ r=h;
printf("请输入系数:\n");
scanf("%g",&xishu); /*输入系数*/
/*浮点数的输入与输出,如果是%g,则可以将小数点后多余的0省略*/
/*如果是%f则不能省略后面多余的0*/
printf("请输入指数:\n");
scanf("%d",&zhishu); /*输入指数*/
/*输入系数为0时,表示多项式的输入结束*/
while(xishu != 0)
{
s=(PloyNode *)malloc(sizeof(PloyNode)); /*申请新结点*/
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据结构实验报告实验一:一元多项式相加
姓名:周成
学号:
专业:软件工程
任课教师:马慧珠
2013年12 月01 日
1.实验名称:
一元多项式相加
2.实验目的:
如何使用C语言实现链表的说明、创建以及结点的插入和删除等操作。
3.实验要求:
对一元多项式能实现输入、输出,以及两个一元多项式相加及结果显示。
4.实验内容:
一元多项式的表示在计算机内用链表来实现,同时为了节省存储空间,只存储其中非零的项,链表中的每个节点存放多项式的系数非零项。它包含三个域,分别存放多项式的系数,指数,以及指向下一个项的指针。根据一元多项式相加的运算规则:对于两个一元多项式中所有指数相同的项,对应系数相加,若其和不为零,则构成“和多项式”中的一项,对于两个一元多项式中所有指数不相同的项,则分别复抄到“和多项式”中去。
核心算法PolyAdd是把分别由pa和pb所指的两个多项式相加,结果为pa所指的多项式。运算规则如下:相加时,首先设两个指针变量qa和qb分别从多项式的首项开始扫描,比较qa和qb所指结点指数域的值,可能出现下列三种情况之一:
(1)qa->exp大于qb->exp,则qa继续向后扫描。
(2)qa->exp等于qb->exp,则将其系数相加。若相加结果不为零,将结果放入qa->coef中,并删除qb所指结点,否则同时删除qa和qb所指结点。
然后qa、qb继续向后扫描。
(3)qa->exp小于qb->exp,则将qb所指结点插入qa所指结点之前,然后qa、qb继续向后扫描。
扫描过程一直进行到qa或qb有一个为空为止,然后将有剩余结点的链表接在结果表上。所得pa指向的链表即为两个多项式之和。
5.实验程序代码及运行结果:
#include""
#include<>
#include<>
#include<>
#include<>
#define NULL 0
typedef struct NODE
{
float coef;
验总结
本来我对编程很没有信心,做这样一个课程设计感觉有点吃力,虽然有些人觉得很简单,但是我还是坚持做下来了,我不断的看书,翻阅资料,询问同学,上网搜索,总算有模有样地把这个程序编的能运行了。
其次,这次编程是我更多地理解掌握了线性链表的逻辑机构和物理特性。对学过的知识有了很好的巩固。困难还是很多的,比如初次运行的时候,好几十个错误,当时真的感到非常崩溃。幸亏我没有放弃,才最终完成。长舒一口气。
最后,通过这次编程,不仅仅考察了我对知识的掌握,更重要的是锻炼了我的思维能力和耐心,在最困难的时候没有放弃,今天才能如此舒心。