1.介绍
在数学中,多项式是包含一个或多个变量中的功率之和乘以系数的表达式。一个变量中的多项式,,恒定系数就像:
。我们称每个项目称为,例如,
, 一个条件。如果两个术语具有相同的权力,我们会像术语一样称呼它们。
在本教程中,我们将展示如何使用链接列表数据结构添加和乘以两个多项式。
2.代表具有联系列表的多项式
我们可以使用一个链接名单代表多项式。在链接列表中,每个节点有两个数据字段:系数和电源。因此,每个节点表示多项式的术语。例如,我们可以代表多项式有链接列表:

我们可以排序链接列表在时间,哪里
是链接列表节点的总数。在本教程中,我们将假设链接列表由用于我们算法简单的功率排序。
3.添加两个多项式
要添加两个多项式,我们可以添加相同术语的系数,并为所得到的多项式生成新的链接列表。例如,我们可以使用两个喜欢的列表来表示多项式和
:

当我们将它们添加在一起时,我们可以分组类似的条款并生成结果:

由于两个链接列表由电源订购,因此我们可以使用双指针方法来合并两个排序链接列表:
在该算法中,我们首先创建两个指针,和
,到两个输入多项式的头部指针。然后,我们基于这两个指针的功率生成新的多项式节点。有三种情况:
力量大于
'的力量:在这种情况下,我们将一个新节点附加
的力量和系数。此外,我们搬家了
到下一个节点。
力量大于
'的力量:在这种情况下,我们将一个新节点附加
的力量和系数。此外,我们搬家了
到下一个节点。
和
具有相同的力量:在这种情况下,新系数是总共
的系数和
的系数。如果新系数不是
,我们附加一个具有相同幂次和新的系数的新节点。另外,我们两个都搬
和
到下一个节点。
之后,我们继续从中追加剩余节点或者
直到我们完成所有节点的计算。
这函数可以基于输入创建新的链接列表节点
和
。此外,它将新节点附加到
节点并返回新的
节点:
此算法仅遍历每个链接列表节点一次。因此,整体运行时间是, 在哪里
和
是两个输入多项式的术语数。
4.乘以两个多项式
为了乘以两个多项式,我们可以首先将一个多项式的术语乘以另一个多项式。假设两个多项式有和
条款。这个过程将创建多项式
条款。
例如,在我们繁殖后和
,我们可以获得链接列表:

此链接列表包含要生成最终结果所需的所有术语。但是,它不是由权力排序的。此外,它包含与术语相同的重复节点。要生成最终链接列表,我们可以先归并排序基于每个节点的电源的链接列表:

在排序之后,等术语节点被分组在一起。然后,我们可以合并每组类似术语并获得最终的乘法结果:

我们可以使用算法描述这些步骤:
在这个算法中,我们首先使用嵌套循环乘以两个多项式的所有术语对。这需要
时间,哪里
和
是两个输入多项式的术语数。此外,此过程创建了链接列表
节点。
然后我们合并排序链接列表基于每个节点的功率。这个过程需要时间。
对链接列表进行排序后,我们可以使用双指针方法合并术语:
在这种方法中,我们使用一个指针作为类似术语组的开始,并使用另一个指针来遍历同一组中的术语。每次找到一项术语时,我们都会将其系数添加到开始时术语节点。一旦我们完成一个术语组,我们将开始指针移动到下一个组,并重复相同的进程以合并术语。这个过程的运行时间是我们需要访问
节点。
总的来说,运行时间是。
结论
在本教程中,我们展示了如何表示具有链接列表数据结构的多项式。此外,我们展示了两个算法,用于添加和乘以多项式的两个链接列表表示。