📌  相关文章
📜  链表中所有正整数的总和(1)

📅  最后修改于: 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;否则,如果节点的值为正数,则将值加入总和中,并递归到下一节点;如果节点的值为负数,则跳过当前节点,递归到下一节点。

总结

本文介绍了如何计算链表中所有正整数的总和。迭代方法和递归方法都可以实现这一功能。在实际开发中,应根据具体情况选择合适的方法。