![一元稀疏多项式计算器实习报告[1].doc_第1页](http://file.renrendoc.com/FileRoot1/2020-1/3/4c91cc18-8546-4eb5-a45b-13418850ddea/4c91cc18-8546-4eb5-a45b-13418850ddea1.gif)
![一元稀疏多项式计算器实习报告[1].doc_第2页](http://file.renrendoc.com/FileRoot1/2020-1/3/4c91cc18-8546-4eb5-a45b-13418850ddea/4c91cc18-8546-4eb5-a45b-13418850ddea2.gif)
![一元稀疏多项式计算器实习报告[1].doc_第3页](http://file.renrendoc.com/FileRoot1/2020-1/3/4c91cc18-8546-4eb5-a45b-13418850ddea/4c91cc18-8546-4eb5-a45b-13418850ddea3.gif)
![一元稀疏多项式计算器实习报告[1].doc_第4页](http://file.renrendoc.com/FileRoot1/2020-1/3/4c91cc18-8546-4eb5-a45b-13418850ddea/4c91cc18-8546-4eb5-a45b-13418850ddea4.gif)
![一元稀疏多项式计算器实习报告[1].doc_第5页](http://file.renrendoc.com/FileRoot1/2020-1/3/4c91cc18-8546-4eb5-a45b-13418850ddea/4c91cc18-8546-4eb5-a45b-13418850ddea5.gif)
已阅读5页,还剩6页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
。实习报告题目:设计一个一元稀疏多项式计算器班级: 姓名 学号_完成日期:_一、课程题目 一元稀疏多项式计算器二、 需求分析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 建立多项式存储结构,定义指针*next2.3利用链表实现队列的构造。每次输入一项的系数和指数,可以输出构造的一元多项式3、测试数据:(1)、(2x+5x8-3.1x11)+(7-5x8+11x9)=(-3.1x11+11x9+2x+7);(2)、(6x-3-x+4.4x2-1.2x9+1.2x9)-(-6x-3+5.4x2-x2+7.8x15)=(-7.8x15-1.2x9+12x-3-x);(3)、(1+x+x2+x3+x4+x5)+(-x3-x4)=(1+x+x2+x5);(4)、(x+x3)+(-x-x3)=0;(5)、(x+x100)+(x100+x200)=(x+2x100+x200);(6)、(x+x2+x3)+0=x+x2+x3.三、概要设计1. 有序表的抽象数据类型定义为:ADT List数据对象:D=ai| aiR,i=1,2,n,n0数据关系:R1=| ai-1,aiD, ai-1,ai, i=1,2,3,.n基本操作:InitList()操作结果:构造一个空的有序表L。DestroyList(L)初始条件:有序表L已存在。操作结果:销毁有序表L。ListLength(L)初始条件:有序表L已存在。操作结果:返回有序表L的长度。ClearList( L ) 初始条件:有序表L已存在。操作结果:清空链表内容。Ins_before ( N,N ) 初始条件:有序表L已存在。操作结果:插入节点到链表。 ADT OrderedList2.多项式的抽象数据类型定义为:ADT Poly 数据对象:D=ai |ai为实数,i=1,2,n 数据关系:R1= 基本操作:CreatePoly( L,N )初始条件:N为节点,L为有序表。操作结果:将N 插入多项式的适当位置。GetPoly( L )操作结果:将用户输入转换为节点。PrintPoly( L )初始条件:多项式L已存在。操作结果:显示多项式。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多项式取相反数。ADT Poly、三、 详细设计1、Constant.h#ifndef _constant_#define _constant_#include#include#define TURE 1#define FALSE 0#define OK 1#define ERROR 0#define INFEASIBLE -1#define OVERFLOW -2typedef int Status;#endif2、Polynt.h#includeconstant.htypedef struct elemTypefloat coef;/系数int expn;/指数ElemType;typedef struct nodeElemType data; /指向结点元素的值struct node *next; /后继Node,*Polyn; /结点类型,指针类型typedef structNode *head;Node *tail;List;Status MakeNode(Polyn &p,ElemType e); /分配由p指向的数据元素为e、后继为“空”的结点Status InitList(List &L); /构造链表Status DestroyList(List &L); /销毁线性表void Insert(List &L,Polyn s); /将s指向的结点插入L的最后一个结点void Insbefore(Polyn p,Polyn q);Status CreatPolyn(List &polynomial,int m); /创建一个一元多项式polynomial,并输入m项的指数和系数void PrintPolyn(List L); /打印输出一元多项式void AlterPoly(List L); /减法void AddPolyn(List L1,List L2,List &L3); /多项式加法3、Polyn.cpp#includePolynt.hStatus MakeNode(Polyn &p,ElemType e)/分配由p指向的数据元素为e、后继为“空”的结点p=(Polyn)malloc(sizeof(Node);p-data.coef=e.coef;p-data.expn=e.expn;p-next=NULL;return OK;Status InitList(List &L)/初始化链表ElemType e;Polyn p;e.coef = ;e.expn = ;MakeNode(p,e);L.head = p;L.tail=p;return OK;Status DestroyList(List &L)/销毁链表Polyn p,q;if(L.head=L.tail) free(L.head);L.head=L.tail=NULL;return OK;p=L.head-next;while(!p)q=p-next;free(p);p=q;L.head=L.tail=NULL;return OK;void Insert(List &L,Polyn s)if(L.head-next =NULL)L.head-next =s;s-next =NULL;L.tail = s;elseif(L.head-next!=NULL & s-data.expnL.head-next-data.expn)s-next=L.head-next;L.head-next=s; return;if(L.tail-data.expns-data.expn)L.tail-next=s; L.tail=s;return;for (Polyn p = L.head-next; p!=NULL;p = p-next )if (s-data.expn= p-data.expn)p-data.coef+=s-data.coef;free(s);return;else if ( p-data.expns-data.expn & p-next-data.expndata.expn)s-next=p-next;p-next=s;return;Status CreatPolyn(List &polynomial,int m)/创建一个一元多项式polynomial,并输入m项的指数和系数ElemType e;Polyn p;for(int i=0;inext;while(p!=NULL)if(p=L.head-next)if(p-data.coef0) if(p-data.expn!=0) printf(%gx%d,p-data.coef,p-data.expn); elseprintf(%g,p-data.coef); else if(p-data.coefdata.expn!=0) printf(%gx%d,p-data.coef,p-data.expn); elseprintf(%g,p-data.coef); else printf( );p=p-next;else if(p!=L.head-next & p!=NULL)if(p-data.coef0) if(p-data.expn!=0) printf(+%gx%d,p-data.coef,p-data.expn); elseprintf(+%g,p-data.coef); else if(p-data.coefdata.expn!=0) printf(%gx%d,p-data.coef,p-data.expn); elseprintf(%g,p-data.coef); else printf( );p=p-next;elsereturn;void AlterPoly(List L)for(Polyn p=L.head-next;p!=NULL;p=p-next)p-data.coef*=-1;void AddPolyn(List L1,List L2,List &L3)Polyn p1,p2,p3;p1=L1.head-next;p2=L2.head-next;while(p1!=NULL & p2!=NULL)if(p1-data.expnp2-data.expn)MakeNode(p3,p1-data);Insert(L3,p3);p1=p1-next;else if(p1-data.expndata.expn)MakeNode(p3,p2-data);Insert(L3,p3);p2=p2-next;else if(p1-data.expn=p2-data.expn)MakeNode(p3,p2-data);p3-data.coef=p1-data.coef+p2-data.coef;p3-data.expn=p1-data.expn; Insert(L3,p3);p1=p1-next;p2=p2-next;if(p1=NULL & p2!=NULL)while(p2!=NULL)MakeNode(p3,p2-data);Insert(L3,p3);p2=p2-next;else if(p2=NULL & p1!=NULL)while(p1!=NULL)MakeNode(p3,p1-data);Insert(L3,p3);p1=p1-next;4、main.cpp#includePolynt.h#include#includevoid main()system(cls);printf(*n);printf( 欢迎使用一元稀疏多项式计算 n);printf(*n);printf(1、创建多项式A 2、创建多项式B 3、相加 4、相减 5、退出n);List polynomialA,polynomialB,polynomialC;InitList(polynomialA); InitList(polynomialB); InitList(polynomialC);char poly;int m;int n=1;for(;)printf(请输入指令:);poly=getchar();switch(poly)case1: /创建多项式Aprintf(请输入多项式A的项数:);scanf(%d,&m);printf(n请 输 入 多 项 式 A:);CreatPolyn(polynomialA,m);printf(n多项式A是:);PrintPolyn(polynomialA);printf(n);break; case2: /创建多项式Bprintf(请输入多项式B的项数:);scanf(%d,&m);printf(n请 输 入 多 项 式 B:);CreatPolyn(polynomialB,m);printf(n多项式B是:);PrintPolyn(polynomialB);printf(n);break;case3: /加法printf(结果是:);AddPolyn(polynomialA,polynomialB,polynomialC);PrintPolyn(polynomialC);printf(n);break;case4: /减法printf(结果是:);AlterPoly(polynomialB);DestroyList(polynomialC);InitList(polynomial
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 发展新质生产力的时代价值
- 医患关系论文精要2000字
- 青年在新质生产力发展中的行动路径
- 劳模工匠讲新质生产力
- 2025年输血学ABO血型配型技术应用模拟测试卷答案及解析
- 2025年耳鼻喉科常见耳疾诊治知识竞赛试卷答案及解析
- 2025年眼科常见疾病的诊断与治疗综合测试卷答案及解析
- 2025年康复医学评估工具运用考试答案及解析
- 乏燃料后处理新质生产力
- 关于感恩节的幼儿园主题活动方案
- 房屋归属权协议书范本(标准版)
- 鼻腔冲洗护理技术团体标准解读
- GB/T 41130-2021展览场馆安全管理基本要求
- 湘美版美术一年级上册全册课件
- 环境经济学(张)课件
- 人才管理-人才选用育留课件
- 成功八步课件
- 玉石床垫讲稿课件
- 初中音乐七年级上册第一单元 红岩魂走进歌乐山
- 栈桥修复方案(全文)
- 某五星级酒店单项工程经济指标
评论
0/150
提交评论