剑指offer——链表中倒数第k个节点

题目

输入一个链表,输出该链表中倒数第k个结点。

思路

先用一个指针指到k-1,再让另一个指针从头开始和第一个指针一起跑。当第一个知道末尾,第二个刚好指到第k个

c++实现

/*
struct ListNode {
    int val;
    struct ListNode *next;
    ListNode(int x) :
            val(x), next(NULL) {
    }
};*/
class Solution {
public:
    ListNode* FindKthToTail(ListNode *pListHead, unsigned int k) {
        int i = 0;
        ListNode* p = pListHead;
        ListNode* q = pListHead;
        for(; p != NULL; i++){
            if(i >= k)
                q = q->next;
            p = p->next;
        }
        return i < k ? NULL : q;
    }
};

猜你喜欢

转载自blog.csdn.net/gemnwing/article/details/79048887
今日推荐