//遍历一遍找第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