如何找到链表倒数第 k 个节点? - 双指针方法详解
要找到链表倒数第 k 个节点对应的数据,可以使用双指针的方法。
具体步骤如下:
- 定义两个指针:快指针和慢指针,初始时都指向链表的头节点。
- 快指针先向前移动 k 个位置。
- 然后快指针和慢指针同时向前移动,直到快指针到达链表的末尾。
- 此时慢指针指向的节点即为倒数第 k 个节点。
示例代码如下(假设链表节点的数据类型为 int):
def find_kth_from_end(head, k):
if head is None or k <= 0:
return None
fast = head
slow = head
# 快指针先向前移动 k 个位置
for _ in range(k):
if fast is None:
return None
fast = fast.next
# 快指针和慢指针同时向前移动
while fast:
fast = fast.next
slow = slow.next
return slow.data
其中,head 为链表的头节点,k 为倒数第 k 个节点的位置。返回的是倒数第 k 个节点的数据。
注意,上述代码中假设链表的节点有 next 属性,表示指向下一个节点的指针。具体实现可能需要根据链表的具体结构进行调整。
原文地址: http://www.cveoy.top/t/topic/pYlA 著作权归作者所有。请勿转载和采集!