求链表中倒数第K个节点,思路很简单我们在遍历时维持两个指针,第一个指针从链表的头指针开始遍历,在第k-1步之前,第二个指针保持不动;在第k-1步开始,第二个指针也开始从链表的头指针开始遍历。由于两个指针的距离保持在k-1,当第一个(走在前面的)指针到达链表的尾结点时,第二个指针(走在后面的)指针正好是倒数第k个结点。
Node* FindK(Node* head,int k)
{
Node* pslow,*pfast;
pslow=pfast=head;
int i=0;
while(i<k)
{
pfast=pfast->next;
i++;
}
while(pfast)
{
pfast=pfast->next;
pslow=pslow->next;
}
return pslow;
}