欢迎来到天天文库
浏览记录
ID:54766018
大小:37.00 KB
页数:10页
时间:2020-04-21
《一元稀疏多项式计算器实习报告.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、实习报告题目:设计一个一元稀疏多项式计算器班级:姓名学号__________完成日期:__一、课程题目一元稀疏多项式计算器二、需求分析1、一元稀疏多项式简单计算器的功能是:1.1输入并建立多项式;1.2输出多项式,输出形式为整数序列:n,c1,e1,c2,e2,………cn,en,其中n是多项式的项数,ci和ei分别是第i项的系数和指数,序列按指数降序排列;1.3求多项式a、b的导函数;1.4计算多项式在x处的值;1.5多项式a和b相加,建立多项式a+b;1.6多项式a和b相减,建立多项式a-b。2、设计思路:2.1定义线性表的动态分配顺序存储结构;2.2
2、建立多项式存储结构,定义指针*next2.3利用链表实现队列的构造。每次输入一项的系数和指数,可以输出构造的一元多项式3、测试数据:(1)、(2x+5x^8-3.1x^11)+(7-5x^8+11x^9)=(-3.1x^11+11x^9+2x+7);(2)、(6x^-3-x+4.4x^2-1.2x^9+1.2x^9)-(-6x^-3+5.4x^2-x^2+7.8x^15)=(-7.8x^15-1.2x^9+12x^-3-x);(3)、(1+x+x^2+x^3+x^4+x^5)+(-x^3-x^4)=(1+x+x^2+x^5);(4)、(x+x^3)+(-
3、x-x^3)=0;(5)、(x+x^100)+(x^100+x^200)=(x+2x^100+x^200);(6)、(x+x^2+x^3)+0=x+x^2+x^3.三、概要设计1.有序表的抽象数据类型定义为:ADTList{数据对象:D={ai
4、ai∈R,i=1,2,…,n,n≧0}数据关系:R1={
5、ai-1,ai∈D,ai-1,6、有序表L已存在。操作结果:返回有序表L的长度。ClearList(L)初始条件:有序表L已存在。操作结果:清空链表内容。Ins_before(N,N)初始条件:有序表L已存在。操作结果:插入节点到链表。}ADTOrderedList2.多项式的抽象数据类型定义为:ADTPoly{数据对象:D={ai7、ai为实数,i=1,2,…,n}数据关系:R1={}基本操作:CreatePoly(L,N)初始条件:N为节点,L为有序表。操作结果:将N插入多项式的适当位置。GetPoly(L)操作结果:将用户输入转换为节点。PrintPoly(L)初始条件:多项式L已存8、在。操作结果:显示多项式。AddPoly(L_1,L_2,L_add)初始条件:多项式L_1,L_2,L_add已存在。操作结果:生成L_1,L_2之和的多项式L_addDiffPoly(L,L_diff)初始条件:多项式L,L_diff已存在。操作结果:生成L的导数多项式L_add。AlterPoly(L)初始条件:多项式L已存在。操作结果:将L多项式取相反数。}ADTPoly、二、详细设计1、Constant.h#ifndef__constant__#define__constant__#include#include9、.h>#defineTURE1#defineFALSE0#defineOK1#defineERROR0#defineINFEASIBLE-1#defineOVERFLOW-2typedefintStatus;#endif2、Polynt.h#include"constant.h"typedefstructelemType{floatcoef;//系数intexpn;//指数}ElemType;typedefstructnode{ElemTypedata;//指向结点元素的值structnode*next;//后继}Node,*Polyn;//结点类型,指10、针类型typedefstruct{Node*head;Node*tail;}List;StatusMakeNode(Polyn&p,ElemTypee);//分配由p指向的数据元素为e、后继为“空”的结点StatusInitList(List&L);//构造链表StatusDestroyList(List&L);//销毁线性表voidInsert(List&L,Polyns);//将s指向的结点插入L的最后一个结点voidInsbefore(Polynp,Polynq);StatusCreatPolyn(List&polynomial,intm);//创11、建一个一元多项式polynomial,并输入m项的指数和系数voidPrintP
6、有序表L已存在。操作结果:返回有序表L的长度。ClearList(L)初始条件:有序表L已存在。操作结果:清空链表内容。Ins_before(N,N)初始条件:有序表L已存在。操作结果:插入节点到链表。}ADTOrderedList2.多项式的抽象数据类型定义为:ADTPoly{数据对象:D={ai
7、ai为实数,i=1,2,…,n}数据关系:R1={}基本操作:CreatePoly(L,N)初始条件:N为节点,L为有序表。操作结果:将N插入多项式的适当位置。GetPoly(L)操作结果:将用户输入转换为节点。PrintPoly(L)初始条件:多项式L已存
8、在。操作结果:显示多项式。AddPoly(L_1,L_2,L_add)初始条件:多项式L_1,L_2,L_add已存在。操作结果:生成L_1,L_2之和的多项式L_addDiffPoly(L,L_diff)初始条件:多项式L,L_diff已存在。操作结果:生成L的导数多项式L_add。AlterPoly(L)初始条件:多项式L已存在。操作结果:将L多项式取相反数。}ADTPoly、二、详细设计1、Constant.h#ifndef__constant__#define__constant__#include#include9、.h>#defineTURE1#defineFALSE0#defineOK1#defineERROR0#defineINFEASIBLE-1#defineOVERFLOW-2typedefintStatus;#endif2、Polynt.h#include"constant.h"typedefstructelemType{floatcoef;//系数intexpn;//指数}ElemType;typedefstructnode{ElemTypedata;//指向结点元素的值structnode*next;//后继}Node,*Polyn;//结点类型,指10、针类型typedefstruct{Node*head;Node*tail;}List;StatusMakeNode(Polyn&p,ElemTypee);//分配由p指向的数据元素为e、后继为“空”的结点StatusInitList(List&L);//构造链表StatusDestroyList(List&L);//销毁线性表voidInsert(List&L,Polyns);//将s指向的结点插入L的最后一个结点voidInsbefore(Polynp,Polynq);StatusCreatPolyn(List&polynomial,intm);//创11、建一个一元多项式polynomial,并输入m项的指数和系数voidPrintP
9、.h>#defineTURE1#defineFALSE0#defineOK1#defineERROR0#defineINFEASIBLE-1#defineOVERFLOW-2typedefintStatus;#endif2、Polynt.h#include"constant.h"typedefstructelemType{floatcoef;//系数intexpn;//指数}ElemType;typedefstructnode{ElemTypedata;//指向结点元素的值structnode*next;//后继}Node,*Polyn;//结点类型,指
10、针类型typedefstruct{Node*head;Node*tail;}List;StatusMakeNode(Polyn&p,ElemTypee);//分配由p指向的数据元素为e、后继为“空”的结点StatusInitList(List&L);//构造链表StatusDestroyList(List&L);//销毁线性表voidInsert(List&L,Polyns);//将s指向的结点插入L的最后一个结点voidInsbefore(Polynp,Polynq);StatusCreatPolyn(List&polynomial,intm);//创
11、建一个一元多项式polynomial,并输入m项的指数和系数voidPrintP
此文档下载收益归作者所有