设计一个链表类,它可以将数字存入链表中,并将两个数字通过链表相加
时间: 2023-08-04 10:23:02 浏览: 87
好的,以下是一个简单的链表类的设计,实现了数字的存储和链表相加功能:
```python
class ListNode:
def __init__(self, val=0, next=None):
self.val = val
self.next = next
class LinkedList:
def __init__(self):
self.head = None
def add(self, num):
if not self.head:
self.head = ListNode(num)
else:
current = self.head
while current.next:
current = current.next
current.next = ListNode(num)
def addTwoNumbers(self, l1: ListNode, l2: ListNode) -> ListNode:
carry = 0
dummy = ListNode(0)
current = dummy
while l1 or l2 or carry:
sum = carry
if l1:
sum += l1.val
l1 = l1.next
if l2:
sum += l2.val
l2 = l2.next
carry = sum // 10
current.next = ListNode(sum % 10)
current = current.next
return dummy.next
```
在这个链表类中,我们首先定义了一个 ListNode 类,表示链表的节点。然后我们定义了一个 LinkedList 类,其中包含了 add() 方法,用于将数字存入链表中。addTwoNumbers() 方法用于将两个链表相加,返回一个新的链表。
在 addTwoNumbers() 方法中,我们定义了一个 dummy 节点和一个 current 节点。我们遍历两个链表 l1 和 l2,将它们的节点值相加,并加上进位 carry。如果相加结果大于等于 10,则需要进位。我们将每次相加后的结果添加到新链表中,并将当前节点移动到下一个节点。最后返回新链表的头节点 dummy.next。
为了测试这个链表类的功能,我们可以执行以下代码:
```python
# 创建两个链表
l1 = LinkedList()
l1.add(2)
l1.add(4)
l1.add(3)
l2 = LinkedList()
l2.add(5)
l2.add(6)
l2.add(4)
# 将两个链表相加
result = LinkedList().addTwoNumbers(l1.head, l2.head)
# 输出结果
while result:
print(result.val, end=" ")
result = result.next
```
这段代码会输出:7 0 8,表示 342 + 465 = 807。
阅读全文