一元多项式的乘法和加法
来源:互联网 发布:电力系统仿真软件综述 编辑:程序博客网 时间:2024/05/17 21:54
02-线性结构2 一元多项式的乘法与加法运算(20 分)
设计函数分别求两个一元多项式的乘积与和。
输入格式:
输入分2行,每行分别先给出多项式非零项的个数,再以指数递降方式输入一个多项式非零项系数和指数(绝对值均为不超过1000的整数)。数字间以空格分隔。
输出格式:
输出分2行,分别以指数递降方式输出乘积多项式以及和多项式非零项的系数和指数。数字间以空格分隔,但结尾不能有多余空格。零多项式应输出0 0
。
输入样例:
4 3 4 -5 2 6 1 -2 03 5 20 -7 4 3 1
输出样例:
15 24 -25 22 30 21 -10 20 -21 8 35 6 -33 5 14 4 -15 3 18 2 -6 1
5 20 -4 4 -5 2 9 1 -2 0
#include<stdio.h>#include<stdlib.h>typedef struct PolyNode *Polynomial;struct PolyNode{ int coef; int expon; Polynomial Next;};Polynomial ReadPoly(){ int n,i; scanf("%d",&n); Polynomial P=(Polynomial)malloc(sizeof(struct PolyNode)); Polynomial node,current; P->Next=NULL; current=P; for(i=0;i<n;i++) { node=(Polynomial)malloc(sizeof(struct PolyNode)); node->Next=NULL; scanf("%d %d",&node->coef,&node->expon); current->Next=node; current=node; } return P;}void PrintPoly(Polynomial L){ if(!L->Next) printf("0 0\n"); else{ Polynomial t=L->Next; printf("%d %d",t->coef,t->expon); t=t->Next; while(t) { printf(" %d %d",t->coef,t->expon); t=t->Next; } printf("\n"); }}Polynomial Add(Polynomial L1,Polynomial L2){ Polynomial t1,t2,t3,x; Polynomial L3=(Polynomial)malloc(sizeof(struct PolyNode)); L3->Next=NULL; t3=L3; t1=L1->Next; t2=L2->Next; while(t1&&t2) { x=(Polynomial)malloc(sizeof(struct PolyNode)); x->Next=NULL; if(t1->expon>t2->expon) { x->coef=t1->coef; x->expon=t1->expon; t3->Next=x; t3=x; t1=t1->Next; } else if(t1->expon<t2->expon) { x->coef=t2->coef; x->expon=t2->expon; t3->Next=x; t3=x; t2=t2->Next; } else { if(t1->coef+t2->coef==0) { t1=t1->Next; t2=t2->Next; } else { x->coef=t1->coef+t2->coef; x->expon=t1->expon; t3->Next=x; t3=x; t1=t1->Next; t2=t2->Next; } } } while(t1) { t3->Next=t1; t3=t1; t1=t1->Next; } while(t2) { t3->Next=t2; t3=t2; t2=t2->Next; } return L3;}Polynomial Multi(Polynomial L1,Polynomial L2){ Polynomial t1,t2,t3,x,middle; Polynomial L3=(Polynomial)malloc(sizeof(struct PolyNode)); L3->Next=NULL; t1=L1->Next; t2=L2->Next; while(t2) { middle=(Polynomial)malloc(sizeof(struct PolyNode)); middle->Next=NULL; t3=middle; while(t1) { x=(Polynomial)malloc(sizeof(struct PolyNode)); x->expon=t1->expon+t2->expon; x->coef=t1->coef*t2->coef; t3->Next=x; t3=x; t1=t1->Next; } L3=Add(L3,middle); t1=L1->Next; t2=t2->Next; } return L3;}int main(){ Polynomial L1,L2,L3,L4; L1=ReadPoly(); L2=ReadPoly(); L3=Multi(L1,L2); L4=Add(L1,L2); PrintPoly(L3); PrintPoly(L4); return 0;}
阅读全文
0 0
- c++一元多项式的乘法和加法
- 一元多项式的加法和乘法运算
- 一元多项式的加法和乘法
- 一元多项式的乘法和加法
- 数据结构习题-一元多项式的加法和乘法
- 一元多项式的乘法与加法运算
- pat--一元多项式的乘法与加法
- 一元多项式的乘法与加法运算
- 一元多项式的乘法与加法运算
- 一元多项式的加法与乘法运算
- 一元多项式的乘法与加法运算
- 一元多项式的乘法与加法运算
- 一元多项式的乘法与加法运算
- 一元多项式的乘法与加法运算
- 一元多项式的乘法与加法运算
- 多项式的加法和乘法
- java单链表实现一元多项式加法和乘法运算
- PAT3-04. 一元多项式的乘法与加法运算
- pulltorefresh+viewpager fragment+HorizontalScrollView
- 史上最全的NB-IoT知识
- 740. [网络流24题] 分配问题 费用流/求最大最小费用
- TabLayout横向滑动,DrawerLayout侧滑,PullToRefreshListView上拉刷新下拉加载联用
- coci2014 contest1T4-MAFIJA——贪心
- 一元多项式的乘法和加法
- labview学习总结
- TortoiseGit 连接Git服务器不用每次输入用户名和密码的方法
- 教育奖得主说,有这种思维方式的孩子容易有更好的发展
- Activity启动流程概要
- 每日英语阅读(六十)
- “智慧燃气”来了, 抄表不用再上门,全国首个商业NB-IoT应用落地
- React Native Could not expand ZIP错误信息
- 夜间模式