线性表的应用算法:构造两个按指数递增的有序链表,实现两个一元多项式相加的代码
时间: 2024-11-03 07:13:16 浏览: 13
算法实验 实验报告 实现两个整数相加
线性表,如链表结构,可以用于表示一元多项式的系数和项,因为每个元素可以代表一项(例如,链表的第一个元素代表常数项,后续元素对应变量x的幂次)。构造两个指数递增的有序链表,意味着我们可以轻松地找到每个多项式的最高次幂及其系数。
对于两个一元多项式相加,我们首先需要遍历这两个链表,将对应的系数相加。如果当前项是相同的指数,则直接累加;如果一个多项式的当前项指数更高,那么就将该系数添加到结果链表,并保留更高的指数。同时,也要处理常数项(即指数为0的情况)。
以下是一个简单的Python示例,假设链表节点定义为`ListNode`,包含`val`(值)和`next`(指向下一个节点的指针):
```python
class ListNode:
def __init__(self, val=0, next=None):
self.val = val
self.next = next
def add_polynomials(l1, l2):
dummy = ListNode(0) # 创建虚拟头结点
current = dummy
carry = 0
while l1 or l2:
if l1:
carry += l1.val
l1 = l1.next
if l2:
carry += l2.val
l2 = l2.next
current.next = ListNode(carry % 10) # 添加当前和进位到新节点
current = current.next
carry //= 10 # 更新进位
if carry: # 如果还有进位,说明最高次幂以上有余数
current.next = ListNode(carry)
return dummy.next # 返回结果链表的头节点
# 示例:
l1 = ListNode(1, ListNode(3, ListNode(2))) # 表示多项式 1 + 3x^1 + 2x^2
l2 = ListNode(4, ListNode(2)) # 表示多项式 4 + 2x^1
result = add_polynomials(l1, l2)
```
阅读全文