📌  相关文章
📜  编写一个函数来获取链表中的第 N 个节点(1)

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

编写一个函数来获取链表中的第 N 个节点

在链表数据结构中,每个节点存储着一个数据元素和一个指向下一个节点的指针。如果我们要获取链表中的第 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 个节点,可以方便地在链表中查找任意位置的数据。