欢迎来到天天文库
浏览记录
ID:11067147
大小:397.97 KB
页数:20页
时间:2018-07-09
《一元多项式计算(数据结构课程设计)》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、池州学院CHIZHOUCOLLEGE《数据结构》课程设计报告学号:57543937202527姓名:周田张永鹏武警温凯侨李坤米昌华阮健健班级:10计算机科学与技术(2)班指导教师:成绩:数学与计算机科学系一、课程设计基本情况1、设计名称一元多项式计算2、主要功能能够按照指数降序排列建立并输出多项式;能够完成两个多项式的相加、相减,并将结果输出;3、设计平台电脑、Visualc++6.0一、系统设计1、算法思想根据一元多项式相加的运算规则:对于两个一元多项式中所有指数相同的项,对应指数相加(减),若其和(差)不为零,则构成“和(差)多项式”中的一
2、项;对于两个一元多项式中所有指数不相同的项,则分别写到“和(差)多项式”中去。因为多项式指数最高项以及项数是不确定的,因此采用线性链表的存储结构便于实现一元多项式的运算。为了节省空间,我采用两个链表分别存放多项式a和多项式b,对于最后计算所得的多项式则利用多项式a进行存储。主要用到了单链表的插入和删除操作。(1)一元多项式加法运算它从两个多项式的头部开始,两个多项式的某一项都不为空时,如果指数相等的话,系数就应该相加;相加的和不为零的话,用头插法建立一个新的节点。P的指数小于q的指数的话就应该复制q的节点到多项式中。P的指数大于q的指数的话,就
3、应该复制p节点到多项式中。当第二个多项式空,第一个多项式不为空时,将第一个多项式用新节点产生。当第一个多项式空,第二个多项式不为空时,将第二个多项式用新节点产生。(2)一元多项式的减法运算它从两个多项式的头部开始,两个多项式的某一项都不为空时,如果指数相等的话,系数就相减;相加的和不为零的话,用头插法建立一个新的节点。p的指数小于q的指数的话,就应该复制q的节点到多项式中。P的指数大于q的指数的话就应该复制p的节点到多项式中,并且建立的节点的系数为原来的相反数;当第二个多项式空,第一个多项式不为空时,将第一个多项式用新节点产生。当第一个多项式空
4、,第二个多项式不为空时,将第二个多项式用新节点产生,并且建立的节点的系数为原来的相反数。2、概要设计(1)主函数流程图:(注:a代表第一个一元二次方程,b代表第二个一元二次方程)开始定义结构体定义函数类型及名称构造指数比较函数排列顺序(降序)用单链接储存a,b项目的系数和指数开始进行加减法运算输出构造出的多项式指数不同输出多项式,求项数创建并初始化多项式链表输入系数和指数指数相同合并同类项按指数排序结束将单链表的节点释放,使已建立的多项式销毁a项的指数值=b项的指数值选择语句a项指数值
5、指数值按降序排列摘取a指数值到“和多项式”释放a和b的结点将a和b的系数相加(减)a项指数值>b项指数值(2)一元多项式计算算法用类C语言表示:Typedefstruct00{//项的表示,多项式的项作为LinkList的数据元素Floatcoef;//细数Intexpn;//指数}term,ElemType;//两个类型名:term用于本ADT,ElemType为LinkList的数据对象名TypedefLinkListpolynomial://用带表头的节点的有序链表表示多项式//基本操作的函数原型说明VoidCreatePolyn(pol
6、ynomail&P);//输入n的系数和指数,建立表示一元多项式的有序链表P销毁一元多项式PVoidDestroyPolyn(polynomailP);销毁一元多项式PvoidPrintPoly(polynomailP);//打印输入一元多项式PIntPolynLength(polynnomailP);//返回一元多项式P中的项数voidCreatPolyn(polynomail&Pa.polunomail&Pb);//完成多项式相加运算,即:Pa=Pa+Pb,并贤惠一元多项式PbvoidSubtractPolyn(polunomail&Pap
7、olunomail&Pb);//完成多项式相减运算,即:Pa=Pa-Pb,并销毁一元多项式Pb//基本操作的算法描述Intcmp(tema,tempb);//依a的指数值<(或=)(或>b的住数值,分别返回-1、0和+1VoidCreatePolyn(polynomail&P,intm){//输入m项的系数和指数,建立表示一元多项式的有序链表PInitList(P);h=GetHead(P);E.coef=0.0;e.expn=-1;SerCurElem(h,e);//设置头结点的数据元素For(i=1;i<=m;++i){//依次输入m个非零
8、项Scanf(e.coef,e.epn);If(!LocateElem(P,e,q,(*cmp)())){//当前链表中不存在该指数项If(MakeN
此文档下载收益归作者所有