欢迎来到天天文库
浏览记录
ID:20188197
大小:32.50 KB
页数:3页
时间:2018-10-10
《一元多项式相加》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、#includeusingnamespacestd;typedefstructPNode{floatcoef;//系数intexpn;//指数structPNode*next;}PNode,*Polynomial;//-----------一元多项式的创建---------voidCreatPolyn(Polynomial&p,intm){p=newPNode;Polynomialq,pre;PNode*s;p->next=NULL;//先建立一个带头结点的单链表cout<<"请输入多项式:"<2、/生成新结点cin>>s->coef>>s->expn;//输入元素值pre=p;//pre用于保存q的前驱,初值为头结点q=p->next;while(q&&q->expnexpn)//通过比较指数找到第一个大于输入项指数的项q{pre=q;q=q->next;}s->next=q;//将输入项s插入到q和其前驱结点pre之间pre->next=s;}}//-----------一元多项式的输出------------voidPrintPolyn(Polynomial&p){p=p->next;while(p){cout<coef<<""<expn<<"";p=p-3、>next;}}//------------一元多项式的相加------------voidAddPolyn(Polynomial&pa,Polynomial&pb){//多项式加法:pa=pa+pb,利用两个多项式的结点构成“和多项式”floatsum;Polynomialp1,p2,p3,r;p1=pa->next;p2=pb->next;//p1和p2初值分别指向pa和pb的第一个结点p3=pa;//p3指向和多项式的当前结点,初值为pawhile(p1&&p2){if(p1->expn==p2->expn)//指数相等{sum=p1->coef+p2->coef;//sum保存两项的4、系数之和if(sum!=0)//系数和不为0{p1->coef=sum;//修改pa当前结点p1的系数值为两项系数之和p3->next=p1;p3=p1;//将修改后的pa当前结点p1链在p3之后,p3指向p1p1=p1->next;//p1指向后一项r=p2;p2=p2->next;deleter;//删除pb当前结点r}else{r=p1;p1=p1->next;deleter;r=p2;p2=p2->next;deleter;}}elseif(p1->expnexpn)//pa当前结点p1的指数较小{p3->next=p1;p3=p1;p1=p1->next;}else{p35、->next=p2;p3=p2;p2=p2->next;}}p3->next=p1?p1:p2;//插入非空多项式的剩余段deletepb;}intmain(){PNode*pa,*pb;intm;cout<<"创建第一个一元多项式:"<>m;CreatPolyn(pa,m);cout<<"创建第二个一元多项式:"<>m;CreatPolyn(pb,m);cout<<"两个多项式相加有:"<6、rn0;}//--1105_XL
2、/生成新结点cin>>s->coef>>s->expn;//输入元素值pre=p;//pre用于保存q的前驱,初值为头结点q=p->next;while(q&&q->expnexpn)//通过比较指数找到第一个大于输入项指数的项q{pre=q;q=q->next;}s->next=q;//将输入项s插入到q和其前驱结点pre之间pre->next=s;}}//-----------一元多项式的输出------------voidPrintPolyn(Polynomial&p){p=p->next;while(p){cout<coef<<""<expn<<"";p=p-
3、>next;}}//------------一元多项式的相加------------voidAddPolyn(Polynomial&pa,Polynomial&pb){//多项式加法:pa=pa+pb,利用两个多项式的结点构成“和多项式”floatsum;Polynomialp1,p2,p3,r;p1=pa->next;p2=pb->next;//p1和p2初值分别指向pa和pb的第一个结点p3=pa;//p3指向和多项式的当前结点,初值为pawhile(p1&&p2){if(p1->expn==p2->expn)//指数相等{sum=p1->coef+p2->coef;//sum保存两项的
4、系数之和if(sum!=0)//系数和不为0{p1->coef=sum;//修改pa当前结点p1的系数值为两项系数之和p3->next=p1;p3=p1;//将修改后的pa当前结点p1链在p3之后,p3指向p1p1=p1->next;//p1指向后一项r=p2;p2=p2->next;deleter;//删除pb当前结点r}else{r=p1;p1=p1->next;deleter;r=p2;p2=p2->next;deleter;}}elseif(p1->expnexpn)//pa当前结点p1的指数较小{p3->next=p1;p3=p1;p1=p1->next;}else{p3
5、->next=p2;p3=p2;p2=p2->next;}}p3->next=p1?p1:p2;//插入非空多项式的剩余段deletepb;}intmain(){PNode*pa,*pb;intm;cout<<"创建第一个一元多项式:"<>m;CreatPolyn(pa,m);cout<<"创建第二个一元多项式:"<>m;CreatPolyn(pb,m);cout<<"两个多项式相加有:"<6、rn0;}//--1105_XL
6、rn0;}//--1105_XL
此文档下载收益归作者所有