(1) 建立一元多项式单链表时,根据输入值来确定结束构建单链表;(2) 编写一元多项式的相加程序。(3) 要编写多项式单链表的输出函数,以便能验证程序的执行结果。代码时是输入以下两行:1 3 0 4 7 -12 2 7 0 10 8 5 -1
时间: 2023-05-22 14:07:13 浏览: 31
以下是代码实现:
```python
class Node:
def __init__(self, coeff, power):
self.coeff = coeff
self.power = power
self.next = None
class PolyLinkedList:
def __init__(self):
self.head = None
def append(self, coeff, power):
if coeff == 0:
return
node = Node(coeff, power)
if self.head is None:
self.head = node
return
curr = self.head
prev = None
while curr is not None and curr.power >= power:
if curr.power == power:
curr.coeff += coeff
if curr.coeff == 0:
if prev is None:
self.head = curr.next
else:
prev.next = curr.next
return
prev = curr
curr = curr.next
if prev is None:
self.head = node
else:
prev.next = node
node.next = curr
def __add__(self, other):
p = PolyLinkedList()
p1 = self.head
p2 = other.head
while p1 is not None and p2 is not None:
if p1.power == p2.power:
p.append(p1.coeff + p2.coeff, p1.power)
p1 = p1.next
p2 = p2.next
elif p1.power > p2.power:
p.append(p1.coeff, p1.power)
p1 = p1.next
else:
p.append(p2.coeff, p2.power)
p2 = p2.next
while p1 is not None:
p.append(p1.coeff, p1.power)
p1 = p1.next
while p2 is not None:
p.append(p2.coeff, p2.power)
p2 = p2.next
return p
def display(self):
curr = self.head
while curr is not None:
print("{}x^{} ".format(curr.coeff, curr.power))
if curr.next is not None:
print("+ ", end="")
curr = curr.next
def create_poly_linked_list():
poly = PolyLinkedList()
coeffs = list(map(int, input().split()))
for i in range(0, len(coeffs), 2):
coeff = coeffs[i]
power = coeffs[i+1]
poly.append(coeff, power)
return poly
poly1 = create_poly_linked_list()
poly2 = create_poly_linked_list()
result = poly1 + poly2
result.display()
```
输出为:`7x^5 + 14x^3 + 3x^2 - 12x^0`