输入一个链表,输出该链表中倒数第k个结点。
解题思路:对于一个链表而言,题目没有告诉是单向链表还是双向链表,则只能按照单链表来做,输出链表的倒数第k个结点,可以这样做
1.先正向遍历找到正向的第k个结点;
2.指定两个指针,一个指针从k开始往后遍历,当它结束时,另一个指针从头开始刚好指向倒数第k个结点。
ListNode* FindKthToTail(ListNode* pListHead, unsigned int k)
{
struct ListNode* fast = pListHead;
struct ListNode* slow = pListHead;
while(k--)
{
if(fast == NULL)
{
return NULL;
}
fast = fast->next;
}
while(fast)
{
fast = fast->next;
slow = slow->next;
}
return slow;
}