📅  最后修改于: 2023-12-03 15:42:07.913000             🧑  作者: Mango
本文讨论如何计算链表中所有正整数的总和。链表是一种常见的数据结构,由一系列节点组成。每个节点包含两部分:数据域和指针域。数据域存储节点的值,指针域指向下一个节点。
我们可以使用迭代或递归的方式遍历链表,并将每个节点的值累加到总和中。以下是两种方法的实现细节。
在迭代方法中,我们遍历链表直到尾节点,将每个节点的值加入总和中。
def sum_linked_list(head):
"""
计算链表中所有正整数的总和
:param head: 链表头节点
:return: 总和
"""
total = 0
cur = head
while cur:
if cur.val > 0:
total += cur.val
cur = cur.next
return total
在上述实现中,我们从链表头节点开始遍历,每次将节点的值加入总和中。如果节点的值为负数,则跳过。
在递归方法中,我们先递归到链表的尾节点,然后从后往前依次将节点值加入总和中。
def sum_linked_list(head):
"""
计算链表中所有正整数的总和
:param head: 链表头节点
:return: 总和
"""
if not head:
return 0
if head.val > 0:
return head.val + sum_linked_list(head.next)
else:
return sum_linked_list(head.next)
在上述实现中,我们先判断链表头是否为空。如果为空,则返回0;否则,如果节点的值为正数,则将值加入总和中,并递归到下一节点;如果节点的值为负数,则跳过当前节点,递归到下一节点。
本文介绍了如何计算链表中所有正整数的总和。迭代方法和递归方法都可以实现这一功能。在实际开发中,应根据具体情况选择合适的方法。