剑指offer--21.链表中倒数第k个结点

定义两个指针,当一个指针指到第K个结点时,第二个指针开始向后移动

--------------

时间限制:1秒 空间限制:32768K 热度指数:602826
本题知识点: 链表

题目描述

输入一个链表,输出该链表中倒数第k个结点。
/*
struct ListNode {
    int val;
    struct ListNode *next;
    ListNode(int x) :
            val(x), next(NULL) {
    }
};*/
class Solution {
    public:
        ListNode* FindKthToTail(ListNode* pListHead, unsigned int k) {
            if(pListHead==NULL||k==0) return NULL;
            int pos_pre = 1;
            ListNode* node_pre = pListHead, *node_tail = pListHead;
            while(node_tail->next != NULL) {
                node_tail = node_tail->next;
                pos_pre++;
                if(pos_pre > k) {
                    node_pre = node_pre->next;
                }
            }
            if(pos_pre < k) return NULL;
            return node_pre;
        }
};
原文地址:https://www.cnblogs.com/slothrbk/p/10617072.html