📅  最后修改于: 2023-12-03 15:40:56.214000             🧑  作者: Mango
此 Python 程序是用链表表示的两个数字相减。链表是一种数据结构,可以表示各种类型的数据,包括数字。在程序中,使用链表可以方便地处理大数相减的问题。
下面是程序的实现代码:
# 链表节点类
class ListNode:
def __init__(self, val=0, next=None):
self.val = val
self.next = next
def addTwoNumbers(l1: ListNode, l2: ListNode) -> ListNode:
# 模拟加法
carry = 0 # 进位
p = q = None # 用于遍历链表的指针
head = ListNode(0) # 结果链表的头节点
cur = head # 用于遍历结果链表的指针
while l1 or l2 or carry:
# 取出两个链表当前位的值并相加
x = l1.val if l1 else 0
y = l2.val if l2 else 0
sum = x + y + carry
carry = sum // 10 # 计算进位
cur.next = ListNode(sum % 10) # 将计算结果添加到结果链表
cur = cur.next
# 继续遍历两个链表
if l1:
l1 = l1.next
if l2:
l2 = l2.next
return head.next
本程序实现的功能是将两个链表表示的数字相减,并返回结果链表。使用该程序,需要先创建两个链表,表示要相减的两个数字,然后将它们作为参数传递给 addTwoNumbers
函数。函数将返回一个结果链表,表示两个数字的差。
下面是一个使用该程序的示例:
# 创建链表表示的两个数字
l1 = ListNode(2)
l1.next = ListNode(4)
l1.next.next = ListNode(3)
l2 = ListNode(5)
l2.next = ListNode(6)
l2.next.next = ListNode(4)
# 执行相减操作
result = addTwoNumbers(l1, l2)
# 打印结果
while result:
print(result.val)
result = result.next
运行上面的代码,将输出 7,0,7
,表示 342 - 465 = -123
。注意,本程序并没有处理负数的情况,如果需要支持负数相减,需要进行一些额外的处理。