Python中链表的倒数第k个节点查找方法

2023-04-11 00:00:00 节点 查找 倒数

链表的倒数第k个节点查找方法可以使用双指针来实现。具体做法是,使用两个指针p1,p2,首先让p2向后移动k个节点,然后再同时让p1, p2向后移动,当p2到达链表尾部时,p1指向的节点就是倒数第k个节点。

下面是Python代码演示:

class ListNode:
    def __init__(self, x):
        self.val = x
        self.next = None

def find_kth_to_tail(head, k):
    if head is None or k <= 0:
        return None
    p1 = head
    p2 = head
    for i in range(k-1):
        if p2.next is not None:
            p2 = p2.next
        else:
            return None
    while p2.next is not None:
        p2 = p2.next
        p1 = p1.next
    return p1

# 测试示例
if __name__=='__main__':
    head = ListNode(0)
    node1 = ListNode(1)
    node2 = ListNode(2)
    node3 = ListNode(3)
    node4 = ListNode(4)
    head.next = node1
    node1.next = node2
    node2.next = node3
    node3.next = node4
    # 链表为 0 -> 1 -> 2 -> 3 -> 4
    print(find_kth_to_tail(head, 2).val)   # 输出 3

在上述例子中,我们可以看到链表的倒数第2个节点的值为3,程序输出了正确的结果 3。

相关文章