/*
第 13 题:
题目:输入一个单向链表,输出该链表中倒数第 k 个结点。
链表的倒数第0个结点为链表的尾指针。

因为倒数第k个,就是正数第n-k个,因为长度不知道
用2个指针,第一个走K步,则剩下了n-k步,
与另一指针一起走,则返回第n-k个,即倒数第k个
*/
struct listNode
{
int data;
listNode *next;
};

listNode node;

node * lastK(node *head,int k)
{
if(k<0) error("k<0");
node *p=head,*pk=head;

while(k--)//走k步
{
if(pk->next!=NULL)
pk=pk->next;
else
return NULL;
}
while(pk->next!=NULL)//p走n-k步,用pk控制
{
p=p->next;pk=pk->next;
}
return p;
}