C++处理一元多项式的加法运算
发布时间
阅读量:
阅读量
- 问题描述
每个一元多项式的项都包含变量x及其对应的系数组成 Pi 和 指数 i。
当这些项按升幂顺序排列时,则由n+1个系数组成唯一的序列。
因此可以用一个线性表来表示这些系数组。
其中变量 x 的次数 i 被隐含地编码在系数组 Pi 的位置中。
分别构建两个多项式的系数与指数列表。
输出结果是一个链表结构,
该链表存储了两者的和 C(x) 的所有项
- 设计思路
将B(x)作为被加数加入A(x)后生成C(x)。多项式A(x)和B(x)分别由带头结点的线性链表表示;ha和hb分别指向这两个链表的第一个节点。令p和q分别指示多项式的第一个节点。比较p与q节点中的指数项:如果p节点的指数小于q节点,则将p节点的内容添加到C中,并使p指向下一个节点;如果p指数大于q指数,则将q节点的内容添加到C中,并使q指向下一个节点;如果两者相等:系数相加;若结果为零则移除该项;否则更新系数并释放旧节点值。涉及的主要变量包括ha和hb(表示两个多项式的链表头),以及用于遍历的指针变量p和q。
ADD(ha,hb)
- 赋值变量p为ha的下一个节点;同时赋值变量q为hb的下一个节点。
- pre指向p的前驱节点,并且hc字段存储C(x)的头指针。
- 只要p和q都不为null,则进入循环体。
- 进入case结构。
- 比较结果:如果 EXP(p) 小于 EXP(q)
全部评论 (0)
还没有任何评论哟~
