题目描述
输入一个链表,输出该链表中倒数第k个结点。
思路:两个指针相隔k-1个结点,同时前进,当第一个的指针到达尾结点时,第二个指针指向的节点即是倒数第K个结点
ListNode* FindKthToTail(ListNode* pListHead, unsigned int k)
{
/*
//两次遍历
if(pListHead==NULL&&k==0) return NULL;
ListNode *node=pListHead;
int length=0;
while(node)
{
length++;
node=node->next;
}
if(length<k) return NULL;
node=pListHead;
for(int i=0;i<length-k;i++)
{
node=node->next;
}
return node;
*/
//一次遍历
ListNode *head,*tail;
int count=0;
head=pListHead;
tail=pListHead;
while(tail)
{
count++;
if(count>k)
{
head=head->next;
}
tail=tail->next;
}
if(count<k) return NULL;
return head;
}