一元多项式的乘法与加法运算
题目:
设计函数分别求两个一元多项式的乘积与和。
输入格式:
输入分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.因为结果多项式的大小是不确定的,所以采用链表存多项式。用read函数读入多项式 l1 和 l2 ,用 L1 记录加和的结果多项式,用 L2 记录乘积的结果多项式。
*2.把解题过程分为几个简单的函数模块:read(读入)函数,print(输出)函数,add(加和)函数,multi(乘积)函数,除此之外,为了进一步简化,我引入了一个insert(插入)函数。
3.insert函数:该函数的功能是在链表的合适位置上插入一个节点,使链表指数仍然保持有序,如果插入结点的指数等于其中某个结点的指数,则合并同类项,若合并同类项之后该项的系数等于0,就删除这个结点。
4.add函数:把多项式 l2 的每一项利用insert函数插入到多项式 l1 中,就可以得到两个多项式之和。
5.multi函数:先创建一个空的多项式head,然后依次用 l1 的每一项去与 l2 相乘(系数相乘,指数相加),把每一项的结果insert到head中去,最后返回head即可。
6.其他见答案代码注释
我的代码如下:
#include <stdio.h>
#include <stdlib.h>
typedef struct Node *List;
typedef struct Node
{
int a;