1. 实现两个一元多项式的加法运算。 要求: (1)设计函数 createPoly( ),建立一个以单链表形式表示的一元多项式,输 入次序不限,但要求单链表中元素按指数递增次序排列(不能排序算法)。 (2)设计函数 addPoly( ),实现任意两个多项 A 和 B 加法运算,相加结果 在多项式 A 中。要求结果链表仍使用原来两个链表的存储空间,不另外占用其 它的存储空间。 (3)设计函数 output( ),输出多项式。
时间: 2023-05-24 22:05:04 浏览: 40
以下是 Python 代码实现:
class Node:
def __init__(self, coefficient, exponent):
self.coefficient = coefficient
self.exponent = exponent
self.next = None
def createPoly():
head = Node(None, None)
cur = head
while True:
coefficient = int(input("请输入系数(输入0结束):"))
if coefficient == 0:
break
exponent = int(input("请输入指数:"))
node = Node(coefficient, exponent)
cur.next = node
cur = node
return head
def addPoly(polyA, polyB):
curA, curB = polyA.next, polyB.next
head = Node(None, None)
cur = head
while curA and curB:
if curA.exponent < curB.exponent:
cur.next = curA
curA = curA.next
elif curA.exponent > curB.exponent:
cur.next = curB
curB = curB.next
else:
coefficient = curA.coefficient + curB.coefficient
if coefficient != 0:
cur.next = Node(coefficient, curA.exponent)
curA = curA.next
curB = curB.next
cur = cur.next
cur.next = curA if curA else curB
return head
def output(poly):
cur = poly.next
if not cur:
print("0")
else:
while cur:
if cur.coefficient > 0:
print("+", end="")
print(cur.coefficient, "x^", cur.exponent, sep="", end="")
cur = cur.next
print()
polyA = createPoly()
print("多项式A:", end="")
output(polyA)
polyB = createPoly()
print("多项式B:", end="")
output(polyB)
polyA = addPoly(polyA, polyB)
print("多项式A+B:", end="")
output(polyA)