1. 程式人生 > >求單鏈表中倒數第k個結點

求單鏈表中倒數第k個結點

LinkedListNode nthToLast(LinkedListNode head, int k)
{
if (k <= 0)
return NULL;
LinkedListNode p1 = head;
LinkedListNode p2 = head;
//P2向前移動k個結點
for (int i = 0; i < k - 1; i++)
{
if (p2 == NULL)
return NULL;
p2 = p2->next;
}
if (p2 == NULL)
return NULL;
/*現在以同樣的速度移動p1和p2,當p2抵達連結串列末尾時,p1剛好指向倒數第k個結點*/
while (p2->next != NULL)
{
p1 = p1->next;
p2 = p2->next;
}
return p1;
}