您的位置:首页 > 其它

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

2017-09-28 14:25 363 查看
//遍历一遍找第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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐