原题:用链式存储结构存放一元多项式Pn(x)=p(1) x e(1) + p(2) x e(2) + ... + p(n) x e(n),其中 p(i)是指数为 e(i) 项的非零系数,且满足 0 <= e(1) < e(2) <...< e(n)=n。请设计算法将多项式B=Pn2(x) 加到多项式 A=Pn1(x),同时对算法及链表的节点结构简单注释。要求利用 Pn1(x) 和Pn2(x)的节点产生最后求得的和多项式,不允许另建和多项式的节点空间。 分析:这本质上是将两个有序链表合并为一个新的有序链表,对于指数相同的项还要进行合并同类项,用 la 和 lb 分别指向多项式 A 和 B ,具体思路如下:
a.设 pa、pb指针分别指向 la 与 lb 的首元素结点, la 的头节点作为新多项式链表的表头结点,释放 lb 指向的节点所占用的空间。
b.进行循环比较执行:每次比较 pa 与 pb 所指项的指数域的值,取下值较小的结点合并到新多项式链表的表尾处;对于指数相同的项,将系数域相加,如果和为 0 ,删除 pa 和 pb 所指项,并使 pa 和pb后移;如果和不为零,则将 pa 所指项的系数域改为原 pa、pb 所指系数域之和,再将 pa 所指项合并到新多项式链表表尾处,删除 pb 所指项,再将 pa、p