C链表实现多项式加法乘法_第1页
C链表实现多项式加法乘法_第2页
C链表实现多项式加法乘法_第3页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

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

文档简介

1、#include<iostream>using namespace std;class Termpublic:float coef: 系数int expn; /指数Term *next;class Polypublic:Poly() 构造L=new Term;L->next二NULL;Poly (const Poly&) ;/复制xPoly() /析构Term *p;while(L)p=L->next;delete L;L 二p;void createpoly();void displaypoly();int getlenO ;friend void ADDpo

2、ly(Polyft, Poly&);void mulpoly(Poly&, Term*);void multiplypoly(Polyft, Poly&);private:Term *L;Poly: : Poly (const Poly &pl)/深复制L=new Term;Term *p=L,*r=p1. L->next;while(r) p->next=new Term; p->next->coef=r->coef; p->next->expn=r->expn; p=p->next;r=r->nex

3、t;p->next二NULL;int Poly: :getlenO /多项式长度Term *p=L->next;int len=0;while(p)len+;p=p->next;return len;void Poly:createpoly()输入规则:项数/系数1指数1系数2指数2 . Term *p=L, *q;int n;cout<</zPlease input quantity of terms: z,<<endl;cin>>n;cout<</zPlease input the Polynomial:,z<<

4、endl;for(int i=0;i<n;i+) q二new Term; cin>>q->coef; cin>>q->expn; p->next=q;P二 q; p>next二NULL;void Poly:displaypoly()Term 水p二L-next;coutVThe Polynomial is:endl;if(!p) return;wh订e(p->next!=NULL) if(p->expn=O)cout<<p->coef;i.f (p->next->coef>=0) cout&l

5、t; +'elsecout<p->coef"X" "«p-expn;i.f (p->next->coef>=0) cout<<, +'p=p->next;cout«p->coef«"X",z<<p->expn<<endl; void ADDpoly (Poly &pl, Poly &p2) /多项式求和 Term *ha=p1. L,*hb=p2 L;Term *pa=ha->next,*pb=

6、hb->next; while(pa&&pb)if(pa->expn<pb>expn)ha=pa;pa=pa->next;else if(pa->expn>pb->expn)ha->next=pb;hb-next二pb->next; pb->next=pa;pb二hb-next;ha=ha->next;else/相等辻(pa->coef+pb->coef! =0. 0)/系数不为 0pa->coefz:pa->coef+pb->coef;ha=pa;elseha->nex

7、t=pa->next;delete pa;hb-next二pb-next;delete pb;pa=ha->next;pb二hb-next;辻(pb) hd-next二pb;/若pb不为空,则将剩余接到ha后面delete hb;/C (X) =A (X) *B (X)/ =A(X)*blX"el+b2X"e2. +bnX"en/ = (sigma i二l'n)biA(X)X"eivoid Poly: :mulpoly(Poly &pol, Term *p2) /对 A(x)进行系数加权Term *pl=po1. L->

8、next, *p=L;while(pl)p->next=new Term;p->next->coef=pl->coef*p2->coef;p->next-expn二pl-expn+p2-expn;p=p->next;pl二pl-next;p->next二NULL;void Poly: :multiplypoly(Poly &pol, Poly &po2) /将多项式乘法分解为一 系列加法运算Poly poi;Term *p2=po2L->next;while(p2)poi. mulpoly (pol, p2);ADDpoly(*this),poi);poi. L=new Term;poi.L->next二NULL;p2二p2-next;int mdin()Poly pl, p2, p3, p4, p5;cout* ADD * *"«endl;pl. createpoly ();pl. displaypoly ();p2 createpoly ();p2 displaypoly ();cout«"Pl+P2:ADDpoly(pl,p2);pl. displaypoly ();cout<<z,* MUTIPLY *z,<<endl

温馨提示

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

评论

0/150

提交评论