📌  相关文章
📜  用链表表示的两个数字相减的Python程序(1)

📅  最后修改于: 2023-12-03 15:40:56.214000             🧑  作者: Mango

用链表表示的两个数字相减的 Python 程序介绍

简介

此 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。注意,本程序并没有处理负数的情况,如果需要支持负数相减,需要进行一些额外的处理。