📌  相关文章
📜  单链接列表的所有偶数和节点的和与乘积(1)

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

单链接列表的所有偶数和节点的和与乘积

单链接列表是一种常见的链表数据结构,由节点组成,每个节点包含一个值和一个指向下一个节点的指针。在单链接列表中,访问一个节点只能通过它的下一个节点来实现。

问题描述

给定一个单链接列表,编写一个函数,计算所有偶数节点的和以及所有节点值的乘积。

解决方案

我们可以遍历链表,检查每个节点的值是否为偶数。如果是偶数,则将其值加入总和中,否则忽略。

计算所有节点的乘积时,我们可以使用一个变量来存储当前节点的值,并将其乘以下一个节点的值。首先将变量初始化为第一个节点的值,然后遍历整个链表,对于每个节点,将变量乘以节点的值。

class Node:
    def __init__(self, value, next=None):
        self.value = value
        self.next = next


def get_even_sum_and_product(head: Node) -> tuple:
    even_sum = 0
    product = 1
    current_node = head
    while current_node is not None:
        if current_node.value % 2 == 0:
            even_sum += current_node.value
        product *= current_node.value
        current_node = current_node.next
    return even_sum, product

代码中我们定义了一个名为 Node 的节点类,它包含两个属性:值 value 和指向下一个节点的指针 nextget_even_sum_and_product 函数接收链表头节点作为参数,并返回一个元组,其中第一个元素是所有偶数节点的和,第二个元素是所有节点的乘积。

该函数使用 while 循环遍历整个链表。对于每个节点,它检查其值是否为偶数,并将其值加入到 even_sum 中。它还使用 product 变量计算所有节点的乘积。 在遍历过程中,它将每个节点的值乘以 product

示例

考虑下面这个链表:

head -> 1 -> 2 -> 3 -> 4 -> 5 -> None

在这个链表中,偶数节点为 2 和 4,它们的和为 6。节点的乘积为 120。 因此,调用 get_even_sum_and_product 函数应返回元组 (6, 120)

>>> head = Node(1, Node(2, Node(3, Node(4, Node(5)))))
>>> get_even_sum_and_product(head)
(6, 120)
总结

在本文中,我们介绍了一种计算单链接列表中所有偶数节点的和和所有节点的乘积的方法。我们首先遍历链表,检查每个节点的值是否为偶数。然后,我们遍历链表并计算所有节点的乘积。在遍历过程中,我们将每个节点的值乘以一个变量。