设计函数分别求两个一元多项式的乘积与和。
输入格式:
输入分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 |
1.对于乘法 每一项分别相乘 指数相同的项要合并 最后去除所有系数为零的项 如果最后链表为空 说明所有项的系数都为零 则输出0 0
2.对于加法 因为题目给的是有序表 所以依次遍历 遇到两个系数不相同的项 把系数大的放入L4链表 如果相同 则相加后放入 最后去除所有系数为零的项 如果最后链表为空 说明所有项的系数都为零 则输出0 0
#include<iostream>
#include<stdio.h>
#include<stdlib.h>
using namespace std;
typedef struct Node* T;
struct Node
{
int a,b;
T next;
};
T InitList()
{
T x;
x=(T)malloc(sizeof(struct Node));
if(!x)
return NULL;
x->next=NULL;
return x;
}
void scanf_(T L)
{
int len;
scanf("%d",&len);
while(len--)
{
int x,y;
scanf("%d%d",&x,&y);
T t;
t=(T)malloc(sizeof(struct Node));
t->a=x;
t->b=y;
t->next=NULL;
L->next=t;
L=L->next;
}
}
T get1(T L1,T L2)
{
T L3;
L3=InitList();
T s;
while(L1