编写建立链表储存多项式,并实现两多项式相加
时间: 2024-11-06 21:16:31 浏览: 43
创建链表来存储多项式,通常会将每一项作为一个节点,包含系数和指数信息。可以定义一个Node类表示链表中的单个节点,然后构建一个Polynomial类来维护整个链表以及相关的操作。
首先,定义一个`Node`类:
```python
class Node:
def __init__(self, coefficient, exponent):
self.coefficient = coefficient
self.exponent = exponent
self.next = None
```
接着,创建`Polynomial`类,用于链表的增删查改和相加:
```python
class Polynomial:
def __init__(self):
self.head = None
# 添加新项
def add_term(self, coefficient, exponent):
new_node = Node(coefficient, exponent)
if not self.head:
self.head = new_node
else:
current = self.head
while current.next and current.next.exponent == exponent:
current = current.next
if current.next and current.next.exponent > exponent:
new_node.next = current.next
current.next = new_node
else:
current.next = new_node
# 相加两个多项式
@staticmethod
def add_poly(poly1, poly2):
result = Polynomial()
current1 = poly1.head
current2 = poly2.head
carry = 0
while current1 or current2:
coef1 = current1.coefficient if current1 else 0
coef2 = current2.coefficient if current2 else 0
sum_coef = coef1 + coef2 + carry
result.add_term(sum_coef, current1.exponent if current1 else current2.exponent)
carry = 1 if sum_coef >= 10 else 0
if current1:
current1 = current1.next
if current2:
current2 = current2.next
if carry > 0:
result.add_term(carry, 0) # 如果还有进位,则添加一个0次幂的项
return result
```
现在你可以实例化两个`Polynomial`对象并使用`add_poly`方法相加:
```python
poly1 = Polynomial()
# 添加多项式1的项...
poly1.add_term(5, 2)
poly1.add_term(3, 1)
poly2 = Polynomial()
# 添加多项式2的项...
poly2.add_term(4, 2)
poly2.add_term(7, 1)
sum_poly = Polynomial.add_poly(poly1, poly2)
```
阅读全文
相关推荐


















