链表倒数n个结点的乘积c++
时间: 2024-04-29 13:07:05 浏览: 6
题目描述:
输入一个链表,输出该链表倒数第n个结点的值的乘积c。假设链表中结点的值互不相同,且n一定小于链表的长度。
思路:
我们可以先遍历一遍链表,得到链表的长度len,然后再遍历一遍链表,找到倒数第n个结点,计算乘积c。
代码实现:
class ListNode:
def __init__(self, x):
self.val = x
self.next = None
def find_last_n_node_multiply(head, n):
if not head or n <= 0:
return None
len = 0
p = head
while p:
len += 1
p = p.next
if n > len:
return None
p = head
for i in range(len - n):
p = p.next
c = 1
while p:
c *= p.val
p = p.next
return c
# 测试代码
if __name__ == '__main__':
# 创建链表 1 -> 2 -> 3 -> 4 -> 5 -> 6
head = ListNode(1)
node2 = ListNode(2)
node3 = ListNode(3)
node4 = ListNode(4)
node5 = ListNode(5)
node6 = ListNode(6)
head.next = node2
node2.next = node3
node3.next = node4
node4.next = node5
node5.next = node6
print(find_last_n_node_multiply(head, 3)) # 120