查找单链表的倒数第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
//不足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
相关文章推荐
- C语言:【单链表】查找单链表的倒数第k个节点,要求只能遍历一次
- C语言:【单链表】查找单链表的倒数第k个节点,要求只能遍历一次
- 查找单链表的倒数第k个节点,要求只能遍历一次链表(C语言)
- 链表--查找单链表的倒数第k个节点,要求只能遍历一次链表
- 剑指offer 15---查找单链表的倒数第k个节点,要求只能遍历一次链表
- 查找单链表的倒数第k个节点,要求只能遍历一次链表
- 查找单链表的倒数第k个节点,要求只能遍历一次链表
- 逆置/反转单链表+查找单链表的倒数第k个节点,要求只能遍历一次链表
- 查找单链表的倒数第k个节点,要求只能遍历一次链表
- 逆置/反转单链表+查找单链表的倒数第k个节点,要求只能遍历一次链表
- 查找单链表的中间节点,要求只能遍历一次链表
- 查找单链表的中间节点,要求只能遍历一次链表(C语言)
- C语言:【单链表】查找单链表的中间节点,要求只能遍历一次
- 【链表】查找链表倒数第k个结点,要求只能遍历一次
- 查找单链表的中间节点,要求只能遍历一次链表
- 查找单链表的中间节点,要求只能遍历一次链表
- C语言:【单链表】查找单链表的中间节点,要求只能遍历一次
- C实现简单单向链表,一次遍历查找倒数第k个节点的值
- 给你一个链表和一个 random函数, 设计一个算法能随机返回链表的某个节点, 要求每个节点被返回的概率一样。限制条件是只能遍历链表一次并且不能用额外空间。
- 反转单链表+合并有序单链表+查找单链表中倒数第k个节点--20150924