多项式相加输出.doc
上传人:sy****28 上传时间:2024-09-15 格式:DOC 页数:4 大小:41KB 金币:15 举报 版权申诉
预览加载中,请您耐心等待几秒...

多项式相加输出.doc

多项式相加输出.doc

预览

在线预览结束,喜欢就下载吧,查找使用更方便

15 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

#include<iostream>#include<cstdio>usingnamespacestd;structNode{doublecoef;intexpn;Node*next;};voidCreatPolynomial(Node*&head,intn)//生成带表头结点的单链表,除头结点外另生成n个结点{head=(Node*)malloc(sizeof(Node));head->coef=0;head->expn=0;head->next=NULL;//初始化头结点cout<<"请输入各项系数及指数:"<<endl;Node*p=head;for(inti=0;i<n;i++){p->next=(Node*)malloc(sizeof(Node));//生成新结点,尾插入生成链表p=p->next;cin>>p->coef>>p->expn;p->next=NULL;}}voidPrintPolynomial(Node*&head){if(head->next==NULL)//结果是0时直接输出0putchar('0');else{for(Node*p=head->next;p!=NULL;p=p->next){if(p!=head->next&&p->coef>0)//当p不是首项且指向的系数为正时才输出'+'putchar('+');//之前只判定了p->coef>0if(p->coef==1){//系数为1if(p->expn==0)//系数为1,指数为0,则为1putchar('1');}//if(p->coef==1&&p->expn==0)putchar('1');elseif(p->coef==-1)//系数为-1putchar('-');elsecout<<p->coef;switch(p->expn){//指数为0或1时特殊处理case0:break;case1:putchar('x');break;default:p->expn<0?printf("x^(%d)",p->expn):printf("x^%d",p->expn);//指数小于0时打括号break;}}}cout<<endl;}voidFree(Node*&head){Node*q=NULL;for(Node*p=head;p!=NULL;p=q){q=p->next;free(p);}}charcmp(inta,intb){if(a>b)return'>';if(a<b)return'<';return'=';}voidAddPolynomial(Node*&pA,Node*&pB)//传进两个链表的头指针{Node*ha=pA;Node*hb=pB;Node*qa=ha->next;//ha,hb分别跟在qa,qb的后一位置Node*qb=hb->next;//qa,qb分别指向Pa,Pb中当前比较元素while(qa&&qb){doublesum=0;inta=qa->expn;intb=qb->expn;switch(cmp(a,b)){case'<':ha=qa;qa=qa->next;//非ha=ha->next;break;case'=':sum=qa->coef+qb->coef;if(sum!=0.0){qa->coef=sum;ha=qa;}else{if(ha->next!=qa)cout<<"Error:ha->next!=qa"<<endl;ha->next=ha->next->next;//删除和为0的结点,ha不变,还在qa后一位置free(qa);}if(hb->next!=qb)cout<<"Error:hb->next!=qb"<<endl;hb->next=hb->next->next;free(qb);qb=hb->next;qa=ha->next;break;case'>':hb->next=hb->next->next;//删除qb指向的结点qb->next=ha->next;//将qb插入ha后qa前ha->next=qb;qb=hb->next;//notqb=ha->nextha=ha->next;break;default:cout<<"Error!"<<endl;break;}}if(qb)ha->next=qb;free(hb);}intmain(void){Node*A=NULL;Node*B=NUL