设计函数分别求两个一元多项式的乘积与和。
输入格式:
输入分2行,每行分别先给出多项式非零项的个数,再以指数递降方式输入一个多项式非零项系数和指数(绝对值均为不超过1000的整数)。数字间以空格分隔。
输出格式:
输出分2行,分别以指数递降方式输出乘积多项式以及和多项式非零项的系数和指数。数字间以空格分隔,但结尾不能有多余空格。零多项式应输出0 0
。
输入样例:
4 3 4 -5 2 6 1 -2 0
3 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
c语言实现
#include<stdio.h>
#include<stdlib.h>
#define ElemType int
typedef struct ployNode * ploynomial;
typedef struct ployNode{
ElemType coef;
ElemType expon;
ploynomial link;
} ployNode;
ploynomial readPloy();
ploynomial sumPloy(ploynomial p1,ploynomial p2);
ploynomial multPloy(ploynomial p1,ploynomial p2);
void attach(ElemType c,ElemType e,ploynomial * rear);
void printPloy(ploynomial p);
int main(){
ploynomial p1,p2,sum,mul;
p1 = readPloy();
p2 = readPloy();
mul = multPloy(p1,p2);
printPloy(mul);
sum = sumPloy(p1,p2);
printPloy(sum);
return 0;
}
ploynomial readPloy(){
ploynomial rear,p,temp;
int n; //c:coef e:expon
ElemType c,e;
p = (ploynomial)malloc(sizeof(ployNode));
p->link = NULL;
rear = p;
scanf("%d",&n);
while(n--){
scanf("%d%d",&c,&e);
attach(c,e,&rear);
}
temp = p;
p = p->link;
free(temp);
return p;
}
void attach(ElemType c,ElemType e,ploynomial * rear){
ploynomial temp;
temp = (ploynomial)malloc