【nowcoder】链表中倒数第k个结点

牛客题目链接 链表中倒数第k个结点
【nowcoder】链表中倒数第k个结点_第1张图片

/**
 * struct ListNode {
 *	int val;
 *	struct ListNode *next;
 * };
 */
typedef struct ListNode ListNode;

ListNode* FindKthToTail(ListNode* pListHead, int k) {
    if (pListHead != NULL && k > 0) {
        ListNode* slow = pListHead;
        ListNode* quick = pListHead;
        // 1.quick先走k步
        while (k--) {
            if (quick == NULL) {
                return NULL;
            }
            quick = quick->next;
        }
        // 2.再一起走,slow就是倒数第k个节点
        while (quick) {
            slow = slow->next;
            quick = quick->next;
        }
        return slow;
    }
    return NULL;
}

你可能感兴趣的:(C++,刷题,Data,Structure,and,Algorithm,链表,数据结构,算法,c语言,leetcode)