📅  最后修改于: 2023-12-03 14:56:57.429000             🧑  作者: Mango
在链表数据结构中,每个节点存储着一个数据元素和一个指向下一个节点的指针。如果我们要获取链表中的第 N 个节点,我们需要从链表的头节点开始按顺序遍历链表,直到找到第 N 个节点。
以下是一个用 Python 编写的获取链表中第 N 个节点的函数示例:
class ListNode:
def __init__(self, val=0, next=None):
self.val = val
self.next = next
def get_nth_node(head: ListNode, n: int) -> ListNode:
"""
获取链表中的第 N 个节点
:param head: 链表头节点
:param n: 要获取节点的索引,从 1 开始计数
:return: 返回第 n 个节点,若不存在则返回 None
"""
curr_node = head
index = 1
while curr_node and index < n:
curr_node = curr_node.next
index += 1
return curr_node if index == n else None
该函数接受两个参数:链表的头节点 head
和要获取的节点索引 n
,从 1 开始计数。该函数的返回值为第 n 个节点,如果节点不存在则返回 None。
该函数的实现利用了链表的特性,从头节点开始按顺序遍历链表,直到找到第 n 个节点为止。如果链表长度小于 n,则返回 None。
此外,该函数还添加了注释,方便代码的理解和维护。
在实际使用时,我们可以先创建一个链表,再调用该函数来获取链表中的节点。
例如,以下是一个创建链表并获取节点的示例代码:
# 创建链表
node1 = ListNode(1)
node2 = ListNode(2)
node3 = ListNode(3)
node4 = ListNode(4)
node1.next = node2
node2.next = node3
node3.next = node4
# 获取链表中的第 3 个节点
result = get_nth_node(node1, 3)
# 输出结果
if result:
print(result.val)
else:
print("节点不存在")
该代码会输出链表中第 3 个节点的值,即 3
。如果要获取的节点不存在,则会输出 节点不存在
。
通过以上实现,我们成功编写了一个函数来获取链表中的第 N 个节点,可以方便地在链表中查找任意位置的数据。