多项式加减法_第1页
多项式加减法_第2页
多项式加减法_第3页
多项式加减法_第4页
多项式加减法_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

多项式加减法第一页,共十五页,2022年,8月28日实验目的编写程序,实现多项式的加法和减法运算数据结构及算法队列表示:相应多项式加法算法(减法类似)链表表示:相应多项式加法算法(减法类似)具体实现时需要注意的问题输入输出空间分配和释放(new和delete)第二页,共十五页,2022年,8月28日多项式的表示1:队列用一个队列表示一个多项式队列中的每个成员是多项式的一项structNode{ floatcoef;//系数

intexp;//指数};约定:队列从头到尾,按照多项式指数增加(或减少)排列多项式用队列表示的上述多项式队列头第三页,共十五页,2022年,8月28日多项式的表示1:队列-3823-5560386023-55多项式1多项式2结果多项式第四页,共十五页,2022年,8月28日多项式的表示1:队列算法实现可以使用第一个实验中自己实现的队列类可以使用STL中的队列具体用法可以参看msdn第五页,共十五页,2022年,8月28日多项式的表示2:链表用一个链表表示一个多项式链表中的每个结点是多项式的一项structNode{ floatcoef;//系数

intexp;//指数

Node*next;};60-5538多项式链表表示第六页,共十五页,2022年,8月28日多项式的表示2:链表方式一:基于某个链表60-5538^2335-38^6023-25^链表1表示多项式1链表2表示多项式2链表1表示结果多项式链表2为空结果多项式为在链表1的基础上对其进行结点的插入和删除,得到结果多项式。即将链表2中的结点插入到链表1中适当的地方,或者若与链表1中结点指数相等则运算后删除该节点第七页,共十五页,2022年,8月28日多项式的表示2:链表方式二:利用原结点空间,结果用一个新链表存放60-5538^2335-38^6023-25^链表1表示多项式1链表2表示多项式2链表3表示结果多项式链表1为空,链表2为空结果多项式为从链表1和链表2的头部开始进行指数比较。指数相等则系数相加,把结果结点链接到链表3的尾部,删除多余结点;该结点指数唯一,则直接将该节点链接到链表3的尾部第八页,共十五页,2022年,8月28日多项式的表示2:链表方式三:新开辟结点空间,结果用一个新链表存放60-5538^2335-38^6023-25^链表1表示多项式1链表2表示多项式2链表3表示结果多项式链表1不变,链表2不变结果多项式为从链表1和链表2的头部开始进行指数比较。指数相等则系数相加,新开辟空间存放该项结果,把新生成的结果结点链接到链表3的尾部;若结点指数唯一,也新开辟空间存放该结点的值,并将此结点链接到链表3中第九页,共十五页,2022年,8月28日具体实现:多项式输入按多项式一项一项输入,比如提示输入多项式中某一项的系数,输入多项式某一项的指数项数预先定好约定某特殊符号作为输入结束符直接将整个多项式一次输入

6-5x^5+3x^8不用输入,直接程序内赋值,构造多项式编写程序测试的时候使用,用于测试多项式算法是否成功表示为第十页,共十五页,2022年,8月28日具体实现:多项式结果输出将多项式一项项输出比如,输出多项式中第n项的指数,系数多项式整体输出6-5x^5+3x^8考虑每一项的符号问题加号还是减号?通过判断系数与0的大小,决定是否要加上“+”第一项是否有符号(加号可以省略,减号不可以省略)考虑指数为0的情况x0不用输出(x^0)第十一页,共十五页,2022年,8月28日具体实现主要目的是实现多项式的加法和减法,那么可以先把目光集中在具体的算法上,而输入输出可以简化先,等把多项式的加法减法实现,再进一步完善输入输出省略输入:直接在程序内部赋值省略输出:直接用单步调试的方式,观察第十二页,共十五页,2022年,8月28日具体实现方法一:用STL中的队列#ifndefPOLYNOMIAL_H_#definePOLYNOMIAL_H_#include<iostream>#include<queue>usingnamespacestd;structNode{ floatcoef;//系数

intexp;//指数};//classPolynomial-------------------------------------//classPolynomial:privatequeue<Node>{public: voidread(); voidprint()const; //多项式p+q voidequals_sum(Polynomialp,Polynomialq); //多项式p-q voidequals_difference(Polynomialp,Polynomialq);};#endifPolynomial.h第十三页,共十五页,2022年,8月28日具体实现方法二:用自己实现的队列类#ifndefPOLYNOMIAL_H_#definePOLYNOMIAL_H_#include<iostream>usingnamespacestd;#include"Extended_queue.h"//classPolynomial-------------------------------------//classPolynomial:privateExtended_queue{public: voidread(); voidprint()const; voidequals_sum(Polynomialp,Polynomialq); voidequals_difference(Polynomialp,Polynomialq);};#endifPolynomial.h第十四页,共十五页,2022年,8月28日具体实现方法三:直接用链表#ifndefPOLY_H#definePOLY_H#include<iostream>#include"LinkedList.h"usingnamespacestd;classPoly{public: LinkedList*polynomial; //构造函数

Poly() { polynomial=newLinkedList;

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论