收藏 分享(赏)

《数据结构A》第02章——03.ppt

上传人:dzzj200808 文档编号:3315008 上传时间:2018-10-12 格式:PPT 页数:24 大小:247KB
下载 相关 举报
《数据结构A》第02章——03.ppt_第1页
第1页 / 共24页
《数据结构A》第02章——03.ppt_第2页
第2页 / 共24页
《数据结构A》第02章——03.ppt_第3页
第3页 / 共24页
《数据结构A》第02章——03.ppt_第4页
第4页 / 共24页
《数据结构A》第02章——03.ppt_第5页
第5页 / 共24页
点击查看更多>>
资源描述

1、数据结构,Data Structures in C+,2.4 多项式的算术运算,多项式相加p(x)=3x148x8+6x2+2 q(x)=2x10+4x86x2 q(x)p(x)+q(x) 结果:q(x) =3x14+2x104x8+2,多项式的逻辑结构:视为线性表p(x)=3x14-8x8+6x2+2数据元素 (coef,exp) 表示多项式项 coefxexp ,coef是该项的系数,exp是变元x的指数。,多项式的存储表示p(x)=3x14-8x8+6x2+2( (3,14),(-8,8),(6,2),(2,0) )顺序表示线性表长度事先难以确定;算术运算需插入和删除元素。,多项式的链接

2、表示多项式的项,2.4.1 项结点类,项结点类 Term* InsertAfter(int c,int e)构造一个新项(c,e)结点,插在*this项之后,函数返回新项结点的地址。,class Term public:Term(int c,int e); /构造函数1Term(int c,int e,Term* nxt); /构造函数2Term* InsertAfter(int c,int e); private:int coef;int exp;Term *link;friend ostream ,构造函数 Term:Term(int c,int e):coef(c),exp(e) lin

3、k=0; Term:Term(int c,int e,Term *nxt):coef(c),exp(e) link=nxt; Term:Term(int c,int e) coef=c;exp=e;link=0; ,InsertAfter函数实现 Term* Term:InsertAfter(int c,int e) link=new Term(c,e,link); return link; 调用语句:q=q-InsertAfter(c,e);,Term:Term(int c,inte,Term *nxt) :coef(c),exp(e) link=nxt; ,重载输出运算符 ostream

4、,2.4.3 多项式的C+类,class Polynominal public:Polynominal(); Polynominal();void AddTerms(istream /多项式相加,private:Term* theList; /单循环链表的表头指针friend ostream ,2.4.4 多项式类的实现,构造函数 Polynominal:Polynominal() theList=new Term(0,1); theList-link=theList; ,5.2.5 多项式的输入和输出,输入多项式 void Polynominal: AddTerms(istream ,p(x

5、)=3x14-8x8+6x2+2,输出多项式 void Polynominal:Output(ostream ,多项式相加,若p-exp=q-exp,则同类项合并,令q-coef=q-coef+p-coef;如果此时有q-coef=0,则从q(x)中删除结点*q,指针q指向原*q的后继,指针p指向下一项;否则,指针p、q和q1均后移一项。 若 p-expq-exp,则复制*p,新结点插在 *q1与*q之间,指针q1指向新结点,指针q不动,而指针p指向下一项。 若 p-expexp,则将q指示的当前项保留在q(x)中,所以令指针q1和q后移一项,指针p不动。,void Polynominal:P

6、olyAdd(Polynominal,if(p-exp=q-exp) q-coef=q-coef+p-coef;if(q-coef=0) q1-link=q-link; delete(q); q=q1-link; else q1=q; q=q-link; else q1=q1-InsertAfter(p-coef,p-exp); p=p-link;/while (p-exp=0) ,上机实验一 线性表的基本运算和多项式的算术运算,内容: 线性表操作 在顺序表类SeqList中增加成员函数 void Reverse(),实现顺序表的逆置。 在顺序表类SeqList中增加成员函数bool Dele

7、te(const T &x),删除表中所有元素值等于x的元素。若表中存在这样的元素,则删除之,且函数返回true;否则函数返回false。 编写main函数,调用上述新增函数。,一元多项式的相加和相乘 设计带表头结点的单链表表示的多项式类,在该类上定义和实现教材第2.4节中程序2.7的多项式类上的各个运算。 在该类上增加成员函数void PolyMul(Polynominal& r),并重载*运算符。 实现菜单驱动的main函数,测试多项式类上各个运算:输入多项式、显示多项式、多项式加法和乘法运算。,提示:注意本实习采用带表头的非循环链表存储多项式。除乘法运算外,请通过修改教材第2.4节的程序实现各运算。多项式相乘的算法为:将乘数多项式的每一项与被乘数多项式的所有项分别相乘(即系数相乘,指数相加),得到中间多项式。调用函数PolyAdd将这些中间多项式依次加到结果多项式中。值得注意的是:在相乘的过程中不能改变两个原始多项式的值。,要求: (1) 深入理解线性表数据结构,掌握线性表的顺序和链接两种存储表示方法。 (2) 熟练掌握顺序表的各种基本操作。 (3) 学会使用线性表解决应用问题的方法。 (4) 加深对抽象模板类、类的继承、代码重用、重载等C+语言机制的理解和使用。,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 大学课件

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报