多项式的链表表示与加法


链表A表示的多项式: 7 * X^1 + 2 * X^2 + 8 * X^5
链表B表示的多项式: 2 * X^1 + (-2 * X^2) + 2 * X^3
链表C是我们最终的和链表
多项式的链表表示与加法_第1张图片
image.png

算法步骤:

1 . 规定三个头指针,分别指向三个链表的头,然后再规定三个移动指针,分别指向当前三个链表中正在处理的那个节点

2 . 我们让A、B、C的移动指针刚开始也处于头指针的位置,然后,我们拿A节点中的指数和B节点中的指数进行比较,这个时候有三种情况:


a情况 . A中当前的节点指数 < B中当前的节点指数 —— 我们将A中的当前节点插入C中,然后向后移动A和C的指针(因为A中当前节点已经处理了)


b情况 . A中当前的节点指数 > B中当前的节点指数 —— 我们将B中的当前节点插入C中,然后向后移动B和C的指针(因为B中当前节点已经处理了) 即图中⑧的情况。


c情况 . A中当前的节点指数 == B中当前的节点指数 —— 此时A和B当前节点指数相同,可以进行系数相加,这时候也会出现两种情况:

  • 情况1 . 系数之和不为0 —— 我们此时将系数之和放到A中的当前节点的系数域,然后将A中的该节点插入C中,然后向后移动C的指针(记住,我们这里不是产生一个新的节点,而是直接更改A的系数域,然后将A的当前节点插入C中),即图中的①和②产生③的过程。

  • 情况2 . 系数之和为0,删除掉A和B对应节点然后移向下一位。即图中的④和⑤产生⑥的过程。


若A、B链表可能长度不一致,此时,我们只需要将另一个链表中未处理的数据直接接在当前已经生产的C链表的后面即可。


第三步:
打印输出最终计算所得的和链表表达式

你可能感兴趣的:(多项式的链表表示与加法)