查找单链表的倒数第k个节点,要求只能遍历一次链表

来源:互联网 发布:桌面摆件 知乎 编辑:程序博客网 时间:2024/06/09 20:13
//遍历一遍找第K个节点
//不足k个返回空
Node* FindKNode(Node* pHead, size_t k)
{
Node* slow = pHead, * fast = pHead;
while (--k)//走k-1步
{
if (fast == NULL)
{
return NULL;
}
fast = fast->next;
}
while (fast->next)
{
slow = slow->next;
fast = fast->next;
}
return slow;
}
void TestTopic1()
{
Node* list = NULL;
PushBack(&list, 1);
PushBack(&list, 3);
PushBack(&list, 5);
PushBack(&list, 7); 
PushBack(&list, 9);
PrintList(list);
printf("k:%d\n",FindKNode(list,3)->data);
}
输出结果:
13579
k:5
阅读全文
0 0
原创粉丝点击