一元多项式的加法链表
时间: 2024-01-04 11:19:01 浏览: 108
一元多项式的加法链表可以通过线性链表来实现。每个节点表示多项式的一项,包含系数和指数两个属性。链表的头节点指向第一项,每个节点的next指针指向下一项。
以下是一元多项式加法链表的实现步骤:
1. 定义一个节点类,包含系数和指数两个属性。
2. 创建一个空链表,即头节点为空。
3. 依次输入多项式的系数和指数,创建节点,并将节点插入链表中。
4. 重复步骤3,直到输入完所有的项。
5. 对两个多项式链表进行加法运算,将结果存储在一个新的链表中。
- 遍历两个链表,比较当前节点的指数大小。
- 如果指数相等,将两个节点的系数相加,并创建一个新节点插入结果链表中。
- 如果一个链表的指数较小,将该节点插入结果链表中,并继续遍历较大指数的链表。
- 如果一个链表已经遍历完,将另一个链表剩余的节点插入结果链表中。
6. 输出结果链表的每一项。
以下是一个示例代码,演示了一元多项式的加法链表的实现:
```python
class Node:
def __init__(self, coefficient, exponent):
self.coefficient = coefficient
self.exponent = exponent
self.next = None
def create_polynomial():
head = Node(0, 0) # 创建头节点
current = head
while True:
coefficient = input("请输入多项式的系数(输入0结束):")
if coefficient == '0':
break
exponent = input("请输入多项式的指数:")
node = Node(int(coefficient), int(exponent))
current.next = node
current = current.next
return head
def add_polynomials(p1, p2):
result_head = Node(0, 0) # 创建结果链表的头节点
current = result_head
p1 = p1.next
p2 = p2.next
while p1 and p2:
if p1.exponent == p2.exponent:
coefficient = p1.coefficient + p2.coefficient
exponent = p1.exponent
p1 = p1.next
p2 = p2.next
elif p1.exponent < p2.exponent:
coefficient = p1.coefficient
exponent = p1.exponent
p1 = p1.next
else:
coefficient = p2.coefficient
exponent = p2.exponent
p2 = p2.next
node = Node(coefficient, exponent)
current.next = node
current = current.next
while p1:
node = Node(p1.coefficient, p1.exponent)
current.next = node
current = current.next
p1 = p1.next
while p2:
node = Node(p2.coefficient, p2.exponent)
current.next = node
current = current.next
p2 = p2.next
return result_head
# 创建多项式链表
p1 = create_polynomial()
p2 = create_polynomial()
# 计算多项式链表的和
result = add_polynomials(p1, p2)
# 输出结果链表的每一项
current = result.next
while current:
print(f"系数:{current.coefficient},指数:{current.exponent}")
current = current.next
```
阅读全文