链表-多项式相加

来源:互联网 发布:mac 安装node sass 编辑:程序博客网 时间:2024/06/07 05:17
#include<iostream>using namespace std;typedef struct Lnode{<span style="white-space:pre"></span>float xishu;<span style="white-space:pre"></span>int mici;    struct Lnode *next;}Lnode,*Polynomial;#include<iostream>
#include"polynomial.h"using namespace std;void InitPoly(Polynomial &poly){<span style="white-space:pre"></span>poly = new Lnode;<span style="white-space:pre"></span>poly->next=NULL;<span style="white-space:pre"></span>Lnode * ptr=poly;<span style="white-space:pre"></span>float a;<span style="white-space:pre"></span>int b;<span style="white-space:pre"></span>while(1)<span style="white-space:pre"></span>{<span style="white-space:pre"></span>cin>>a>>b;<span style="white-space:pre"></span>if(abs(a-0)<=1e-6 &&b==0)<span style="white-space:pre"></span>{//以0,0表示输入结尾<span style="white-space:pre"></span>cout<<"输入结束"<<endl;<span style="white-space:pre"></span>break;<span style="white-space:pre"></span>}<span style="white-space:pre"></span>Lnode *p=new Lnode;<span style="white-space:pre"></span>p->xishu=a;<span style="white-space:pre"></span>p->mici=b;<span style="white-space:pre"></span>p->next=NULL;//构造结点<span style="white-space:pre"></span>ptr->next=p;//尾插法,<span style="white-space:pre"></span>ptr=p;<span style="white-space:pre"></span>}}void DisplayPoly(Polynomial poly){//输出链表<span style="white-space:pre"></span>Lnode *p = poly->next;<span style="white-space:pre"></span>while(p)<span style="white-space:pre"></span>{<span style="white-space:pre"></span>cout<<"("<<p->xishu<<","<<p->mici<<")";<span style="white-space:pre"></span>p=p->next;<span style="white-space:pre"></span>}<span style="white-space:pre"></span>cout<<endl;}//void CopyPoly(Polynomial dis,Polynomial cour)//{//复制多项式//<span style="white-space:pre"></span>dis->mici=dis->mici;//<span style="white-space:pre"></span>dis->xishu=dis->xishu;//}Polynomial AddPoly(Polynomial &pa,Polynomial pb){//多项式相加<span style="white-space:pre"></span>Polynomial pc= new Lnode;//新建一个多项式链表<span style="white-space:pre"></span>pc->next=NULL;<span style="white-space:pre"></span>Lnode *tpc;<span style="white-space:pre"></span>Lnode *tpa = pa->next;<span style="white-space:pre"></span>Lnode *tpb = pb->next;//分别指向当前结点<span style="white-space:pre"></span>Lnode *curr= pc;//尾插法构造PC时的当前指针<span style="white-space:pre"></span>while(tpa&&tpb)<span style="white-space:pre"></span>{<span style="white-space:pre"></span>if(tpa->mici==tpb->mici)<span style="white-space:pre"></span>{<span style="white-space:pre"></span>tpc = new Lnode;<span style="white-space:pre"></span>tpc->mici = tpa->mici;<span style="white-space:pre"></span>tpc->xishu = tpa->xishu+tpb->xishu;<span style="white-space:pre"></span>tpc->next = NULL;//构造pc的新节点<span style="white-space:pre"></span>if(tpc->xishu != 0)<span style="white-space:pre"></span>{//相加后的系数不为0,才加入链表pc<span style="white-space:pre"></span>curr->next = tpc;<span style="white-space:pre"></span>curr=tpc;//将新节点加入到pc中<span style="white-space:pre"></span>}<span style="white-space:pre"></span>tpa=tpa->next;<span style="white-space:pre"></span>tpb=tpb->next;//将pa,pb的指针都向后移<span style="white-space:pre"></span>}<span style="white-space:pre"></span>else if(tpa->mici>tpb->mici)<span style="white-space:pre"></span>{<span style="white-space:pre"></span>tpc = new Lnode;<span style="white-space:pre"></span>tpc->mici = tpb->mici;<span style="white-space:pre"></span>tpc->xishu = tpb->xishu;<span style="white-space:pre"></span>tpc->next = NULL;//构造pc的新节点<span style="white-space:pre"></span>curr->next = tpc;<span style="white-space:pre"></span>curr=tpc;//将新节点加入到pc中<span style="white-space:pre"></span>tpb=tpb->next;//将pb的指针向后移<span style="white-space:pre"></span>}<span style="white-space:pre"></span>else if(tpa->mici<tpb->mici)<span style="white-space:pre"></span>{<span style="white-space:pre"></span>tpc = new Lnode;<span style="white-space:pre"></span>tpc->mici = tpa->mici;<span style="white-space:pre"></span>tpc->xishu = tpa->xishu;<span style="white-space:pre"></span>tpc->next = NULL;//构造pc的新节点<span style="white-space:pre"></span>curr->next = tpc;<span style="white-space:pre"></span>curr=tpc;//将新节点加入到pc中<span style="white-space:pre"></span>tpa=tpa->next;<span style="white-space:pre"></span>}<span style="white-space:pre"></span>}<span style="white-space:pre"></span>while(tpa)<span style="white-space:pre"></span>{<span style="white-space:pre"></span>tpc = new Lnode;<span style="white-space:pre"></span>tpc->mici = tpa->mici;<span style="white-space:pre"></span>tpc->xishu = tpa->xishu;<span style="white-space:pre"></span>tpc->next = NULL;//构造pc的新节点<span style="white-space:pre"></span>curr->next = tpc;<span style="white-space:pre"></span>curr=tpc;//将新节点加入到pc中<span style="white-space:pre"></span>tpa=tpa->next;<span style="white-space:pre"></span>}<span style="white-space:pre"></span>while(tpb)<span style="white-space:pre"></span>{<span style="white-space:pre"></span>tpc = new Lnode;<span style="white-space:pre"></span>tpc->mici = tpb->mici;<span style="white-space:pre"></span>tpc->xishu = tpb->xishu;<span style="white-space:pre"></span>tpc->next = NULL;//构造pc的新节点<span style="white-space:pre"></span>curr->next = tpc;<span style="white-space:pre"></span>curr=tpc;//将新节点加入到pc中<span style="white-space:pre"></span>tpb=tpb->next;//将pb的指针向后移<span style="white-space:pre"></span>}<span style="white-space:pre"></span>return pc;}int main(void){<span style="white-space:pre"></span>Polynomial p1,p2,p3;<span style="white-space:pre"></span>/*输入多项式,并显示*/<span style="white-space:pre"></span>cout<<"请按幂次依次增大输入第一个多项式,以0,0结尾:"<<endl;<span style="white-space:pre"></span>InitPoly(p1);<span style="white-space:pre"></span>DisplayPoly(p1);<span style="white-space:pre"></span>cout<<"请按幂次依次增大输入第二个多项式,以0,0结尾:"<<endl;<span style="white-space:pre"></span>InitPoly(p2);<span style="white-space:pre"></span>DisplayPoly(p2);<span style="white-space:pre"></span>/*相加*/<span style="white-space:pre"></span>p3 = AddPoly(p1,p2);<span style="white-space:pre"></span>cout<<"相加后的多项式:"<<endl;<span style="white-space:pre"></span>DisplayPoly(p3);<span style="white-space:pre"></span>return 0;}
<span style="font-family:Arial, Helvetica, sans-serif;"><span style="white-space: normal;"></span></span>
0 0
原创粉丝点击