基于链表的两个一元多项式的基本运算python
时间: 2024-09-10 16:04:34 浏览: 86
一元多项式相加,用两个链表组织两个一元多项式,将相加的结果保存在前一个链表中。
5星 · 资源好评率100%
基于链表的两个一元多项式的加法运算可以用Python实现。一元多项式通常由系数和指数组成,其链表表示方式可以用节点来存储每一项,每个节点包含系数(coefficient)、指数(exponent)和指向下一个节点的指针(next)。
首先定义节点类PolynomialNode,用于存储多项式中的每一项:
```python
class PolynomialNode:
def __init__(self, coef=0, exp=0, next=None):
self.coef = coef
self.exp = exp
self.next = next
```
然后创建多项式类Polynomial,用于实现多项式的加法操作:
```python
class Polynomial:
def __init__(self):
self.head = None
def add(self, other):
result = Polynomial()
node1 = self.head
node2 = other.head
while node1 and node2:
if node1.exp > node2.exp:
result.append(node1)
node1 = node1.next
elif node1.exp < node2.exp:
result.append(node2)
node2 = node2.next
else:
coef_sum = node1.coef + node2.coef
if coef_sum != 0:
result.append(PolynomialNode(coef_sum, node1.exp))
node1 = node1.next
node2 = node2.next
# Append remaining nodes from node1 or node2
while node1:
result.append(node1)
node1 = node1.next
while node2:
result.append(node2)
node2 = node2.next
return result
def append(self, node):
if self.head is None:
self.head = node
else:
temp = self.head
while temp.next:
temp = temp.next
temp.next = node
def __str__(self):
res_str = ""
node = self.head
while node:
res_str += f"{node.coef}x^{node.exp} "
node = node.next
return res_str.strip()
# 示例使用
polynomial1 = Polynomial()
polynomial1.append(PolynomialNode(3, 2))
polynomial1.append(PolynomialNode(5, 1))
polynomial1.append(PolynomialNode(4, 0))
polynomial2 = Polynomial()
polynomial2.append(PolynomialNode(1, 3))
polynomial2.append(PolynomialNode(2, 2))
polynomial2.append(PolynomialNode(3, 1))
result = polynomial1.add(polynomial2)
print(result) # 输出结果多项式
```
上面的代码段实现了一元多项式的链表表示和加法运算。多项式的加法是通过头对头、尾对尾地将两个多项式链接起来,然后逐个比较指数,并根据指数的大小进行合并或添加节点。最终得到的多项式是一个按照指数降序排列的链表。
阅读全文