一元多项式加法运算
题目说明:
编写一元多项式加法运算程序。要求用线性链表存储一元多项式。该程序有以下几个功能:
1.多项式求和
输入:输入三个多项式,建立三个多项式链表Pa、Pb、Pc
(提示:调用CreatePolyn(polynomial&P,intm)。
输出:显示三个输入多项式Pa、Pb、Pc、和多项式Pa+Pb、多项式Pa+Pb+Pc
(提示:调用AddPolyn(polynomial&Pa,polynomialPb),调用PrintPolyn(polynomialP))。
0.退出
输入:
根据所选功能的不同,输入格式要求如下所示(第一个数据是功能选择编号,参见测试用例):
1
- 多项式A包含的项数,以指数递增的顺序输入多项式A各项的系数(整数)、指数(整数)
- 多项式B包含的项数,以指数递增的顺序输入多项式B各项的系数(整数)、指数(整数)
- 多项式C包含的项数,以指数递增的顺序输入多项式C各项的系数(整数)、指数(整数)
0---操作终止,退出。
输出:
对应一组输入,输出一次操作的结果(参见测试用例)。
- 1多项式输出格式:以指数递增的顺序输出:<系数,指数>,<系数,指数>,<系数,指数>,参见测试用例。零多项式的输出格式为<0,0>
- 0无输出
测试输入
1
2
1122
2
1122
2
1122
测试输出
<1,1>,<2,2>
<1,1>,<2,2>
<1,1>,<2,2>
<2,1>,<4,2>
<3,1>,<6,2>
源代码
#include#include #defineOK1 #defineERROR0 #defineTRUE1 #defineFALSE0 typedefintElemType; typedefintStatus; typedefstructLNode { ElemTypecoef;//系数 ElemTypeexp;//指数 structLNode*next; }LNode,*LinkList;//线性链表的结构 voidCreateList(LinkList&H) { inta,b,n; LinkListp; scanf("%d",&n); H=(LinkList)malloc(sizeof(LNode)); p=H; for(inti=0;i next=(LinkList)malloc(sizeof(LNode)); p=p->next; p->coef=a; p->exp=b; } p->next=NULL; }//CreateList//以线性链表的结构建立一元多项式 voidPrintList(LinkList&head) { LinkListp; p=head->next; if(p==NULL) { printf("<0,0>\n"); return; } else{ printf("<%d,%d>",p->coef,p->exp); p=p->next; } while(p) { printf(",<%d,%d>",p->coef,p->exp); p=p->next; } printf("\n"); }//PrintList voidAddPolyn(LinkList&pa,LinkList&pb) { intsum=0; LinkLista,b,q,cur; a=pa->next; b=pb->next; cur=pa; while((a!=NULL)&&(b!=NULL)) { if(a->exp exp) { cur=a; a=a->next; } elseif(a->exp==b->exp) { sum=a->coef+b->coef; if(sum==0) { q=a->next; free(a); a=q; cur->next=q; } else { a->coef=sum; cur=a; a=a->next; } q=b; b=b->next; free(q); } else { q=b->next; b->next=a; cur->next=b; cur=b; b=q; } } if(b) cur->next=b; }//AddPolyn Statusmain() { intN; while(scanf("%d",&N)!=EOF) { if(N==0) break; LinkListpa,pb,pc; CreateList(pa); CreateList(pb); CreateList(pc); PrintList(pa); PrintList(pb); PrintList(pc); AddPolyn(pa,pb); PrintList(pa); AddPolyn(pa,pc); PrintList(pa); } return0; }
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对毛票票的支持。如果你想了解更多相关内容请查看下面相关链接
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。