文章
78
粉丝
0
获赞
0
访问
3.6k
(1)双指针法(快慢指针):
初始化两个指针 fast
和 slow
,均指向头结点 list
。
fast
先移动 k 步,使得 fast
和 slow
之间间隔 k 个结点。
同时移动 fast
和 slow
,直到 fast
到达链表末尾(fast->next == NULL
)。
此时 slow
指向倒数第 k 个结点(因为 fast
和 slow
始终保持 k 的间隔)。
如果 fast
在移动过程中提前到达末尾(链表长度不足 k),则查找失败
(2)
初始化指针:
fast = list->next
,slow = list->next
(均指向第一个实际结点)。
count = 0
,记录 fast
已移动的步数。
fast
先移动 k 步:
循环 k
次,每次 fast = fast->next
,count++
。
如果中途 fast == NULL
,说明链表长度不足 k
,直接返回 0。
同步移动 fast
和 slow
:
循环直到 fast == NULL
,每次 fast = fast->next
,slow = slow->next
。
输出结果:
slow
即为倒数第 k 个结点,输出 slow->data
并返回 1。(3)
int FindKthToTail(LinkList list, int k) { if (list == NULL || k <= 0) { ...
登录后发布评论
暂无评论,来抢沙发