题目描述:
思路:
一开始 我的想法是用一个顺 序表来 存储 多项式 ,然后进行运算。 但 后来发现 顺序表 适用于 稠 密多 项式 ,对于 稀 疏多项式 (即相邻 项的幂相差很大 ) 来说时间就不可接受了 。 那怎么解决 这个问题呢? 那就是用一个链表 。 利用链表的特性可以直接 跳过 中间那些系数为0的项,从而大大节省时间。 相加操作的执行有一点归并排序的思想。即利用两个指针的移动,来判断当前哪个指针指向的项的幂大,幂大的就添加到sum求和多项式里,若幂相同则将系数相加再添加到sum求和多项式里(需要注意若系数相加后为0,则应该将此项的幂也变为0,即零多项式应输出 0 0)。完整代码如下:
#include typedef struct Node {
int coef; //项的系数 int exp; //项的幂 struct Node *next;} PolyTerm;PolyTerm *Createpoly(PolyTerm *L, int m) //创建一个m项多项式{
PolyTerm *p