链表中倒数第k个结点
题目描述
输入一个链表,输出该链表中倒数第k个结点。
如果该链表长度小于k,请返回空。
示例1
输入 : {1,2,3,4,5},1
返回: {5}
思路:
定义两个指针head,cur。
让cur指针从链表头向后走k次。
再让head指针和cur指针同时向后移动。当cur为NULL时停止移动。此时head指针就指针倒数第k个数。
代码示例:
struct ListNode* getKthFromEnd(struct ListNode* head, int k) {
struct ListNode* slow = head;
struct ListNode* fast = head;
while (k--)
{
if (fast) //注意k大于链表元素个数。
fast = fast->next;
else
return NULL;
}
while (fast)
{
slow = slow->next;
fast = fast->next;
}
return slow;
}