查找链表中倒数第k个结点
时间: 2023-11-22 19:04:46 浏览: 174
cpp代码-输入一个链表,输出该链表中倒数第k个结点。
要查找链表中倒数第 k 个节点,可以使用双指针的方法。首先定义两个指针,一个指针称为 slow,一个指针称为 fast。将 fast 指针先向前移动 k-1 步,然后 slow 指针从头开始与 fast 指针同时向后移动,直到 fast 指针到达链表末尾。
这时,slow 指针所指的节点就是倒数第 k 个节点。
下面是示例代码实现:
```python
class ListNode:
def __init__(self, val=0, next=None):
self.val = val
self.next = next
def find_kth_from_end(head, k):
slow = fast = head
for _ in range(k):
fast = fast.next
while fast:
fast = fast.next
slow = slow.next
return slow
# 创建链表
head = ListNode(1)
node2 = ListNode(2)
node3 = ListNode(3)
node4 = ListNode(4)
node5 = ListNode(5)
head.next = node2
node2.next = node3
node3.next = node4
node4.next = node5
# 测试查找倒数第 k 个节点
k = 2
result = find_kth_from_end(head, k)
print("倒数第", k, "个节点的值为:", result.val)
```
阅读全文