1、浙江大学城市学院实验报告课程名称 数据结构与算法 实验项目名称 实验一 线性表应用-多项式计算 学生姓名 蓝礼巍 专业班级 学号 实验成绩 指导老师(签名 ) 日期 一. 实验目的和要求1进一步掌握线性表的的基本操作。2掌握线性表的典型应用-多项式表示与计算。二. 实验内容1 设用线性表 ( (a1, e1), (a2, e2), , (am, em) ) 表示多项式 P(x) = a1*xe1 + a2*xe2 + am*xem ,其中:a1am 为非零系数,0e1 e2em,请编写用链式存储结构(带表头附加结点的单链表)存储该多项式时,多项式基本操作的实现函数。多项式基本操作应包括初始化多
2、项式、清除多项式、输出多项式、插入一项、删除一项、多项式求值、多项式相加等。要求:把多项式线性表的结构定义及多项式基本操作实现函数存放在头文件 Linkpoly.h 中,主函数存放在主文件 test6_1.cpp 中,在主函数中通过调用 Linkpoly.h 中的函数进行测试。 2 选做: 编写用顺序存储结构存储多项式时,多项式基本操作的实现函数。要求:把多项式线性表的结构定义及多项式基本操作实现函数存放在文件 Seqpoly.h 中,在主文件 test6_1.cpp 中增加测试语句对 Seqpoly.h 中的函数进行测试。3 填写实验报告,实验报告文件取名为 report1.doc。4 上传
3、实验报告文件 report1.doc 与源程序文件 test6_1.cpp 及Linkpoly.h、Seqpoly.h(若有)到 Ftp 服务器上自己的文件夹下。三. 函数的功能说明及算法思路包括每个函数的功能说明,及一些重要函数的算法实现思路void InitPoly(LNode *InitPoly(head);double a,e;while(1)couti;if(i=1)couta;coute;InsertPoly(head,a,e);else if(i=2)int pos;coutpos;DeletePoly(head,a,e,pos);coutx;if(head-next!=NULL
4、)couth1;for(z=0;zk;razj=k;couth2;for(z=0;zk;rbzj=k;int h3;for(h3=0;h3next=NULL;HL=newpter;void TraversePoly(LNode *HL)if(HL-next=NULL)coutnext;while(HL-next!=NULL)coutdata.a;coutdata.e;coutnext;coutdata.adata.enext;while(cp!=NULL)np=cp-next;delete cp;cp=np;HL-next=NULL;coutdata.a=a;newpter-data.e=e;
5、while(cp!=NULL)if(edata.e)break;elseap=cp;cp=cp-next;newpter-next=cp;ap-next=newpter;bool DeletePoly(LNode *LNode *ap=HL;if(pos=-1)while(cp-next!=NULL)ap=cp;cp=cp-next;elseint i=0;while(cp!=NULL)i+;if(i=pos)break;elseap=cp;cp=cp-next;if(cp=NULL)coutdata.a;e=cp-data.e;ap-next=cp-next;delete cp;return
6、 true;double PoluSum(LNode *HL,double x)double sum;sum=0;while(HL-next!=NULL)sum=sum+HL-data.a*pow(x,HL-data.e);HL=HL-next;sum=sum+HL-data.a*pow(x,HL-data.e);return sum;LNode *PolyAdd2(LNode *p1,LNode *p2)LNode *p3;p3=new LNode;LNode *t1,*t2,*t3;t1=p1;t2=p2;t3=p3;while(t1t3-data=t1-data;t1=t1-next;e
7、lse if(t1-data.e t2-data.e)t3=t3-next=new LNode;t3-data=t2-data;t2=t2-next;elsedouble a1=t1-data.a+t2-data.a;if(a1!=0)t3=t3-next=new LNode;t3-data.a=a1;t3-data.e=t1-data.e;t1=t1-next;t2=t2-next;while(t1)t3=t3-next=new LNode;t3-data=t1-data;t1=t1-next;while(t2)t3=t3-next=new LNode;t3-data=t2-data;t2=t2-next;t3-next=NULL;t3=p3;p3=t3-next;delete t3;return p3;