Python中链表的倒数第k个节点查找方法
链表的倒数第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。
相关文章