📜  单链表所有素节点的和与积(1)

📅  最后修改于: 2023-12-03 14:50:29.577000             🧑  作者: Mango

单链表所有素节点的和与积

单链表是一种常见的数据结构,由多个节点组成,每个节点包含一个数据元素和一个指向下一个节点的指针。

本文将介绍如何计算单链表中所有素节点的和与积,并给出相应的代码示例。

定义单链表节点

首先,我们需要定义单链表的节点。每个节点包含一个数据元素和一个指向下一个节点的指针。

class ListNode:
    def __init__(self, val=0, next=None):
        self.val = val
        self.next = next
计算单链表所有素节点的和与积

为了计算单链表中所有素节点的和与积,我们需要遍历整个链表,并对每个节点进行判断。

算法步骤如下:

  1. 初始化和(sum)和积(product)为0。
  2. 遍历链表的每个节点:
    • 判断节点的值是否为素数:
      • 如果是素数,将节点的值加到和(sum)中,并乘以积(product)。
      • 如果不是素数,跳过该节点。
    • 将当前节点指向下一个节点。
  3. 返回和(sum)和积(product)的值。

下面是用Python实现的计算单链表所有素节点的和与积的函数:

def calculate_sum_product(head):
    # 初始化和与积为0
    sum, product = 0, 1

    # 遍历链表的每个节点
    while head:
        # 判断节点的值是否为素数
        if is_prime(head.val):
            # 如果是素数,更新和与积
            sum += head.val
            product *= head.val

        # 将当前节点指向下一个节点
        head = head.next

    # 返回和与积的值
    return sum, product

def is_prime(n):
    # 判断一个数是否为素数
    if n < 2:
        return False
    for i in range(2, int(n ** 0.5) + 1):
        if n % i == 0:
            return False
    return True
使用示例

下面是一个使用示例的代码片段:

# 创建一个单链表: 1 -> 2 -> 3 -> 4 -> 5
head = ListNode(val=1)
head.next = ListNode(val=2)
head.next.next = ListNode(val=3)
head.next.next.next = ListNode(val=4)
head.next.next.next.next = ListNode(val=5)

# 计算单链表所有素节点的和与积
sum, product = calculate_sum_product(head)

# 输出结果
print(f"Sum: {sum}")
print(f"Product: {product}")

运行上述代码,将输出:

Sum: 5
Product: 2

这表示单链表中所有素节点的和为5,积为2。

总结

本文介绍了如何计算单链表中所有素节点的和与积。算法思路是遍历链表,判断每个节点的值是否为素数,然后更新和与积。代码示例使用Python实现。