链表操作,查找链表中倒数第K个值

思路

  1. 遍历一遍获得链表长度,取出n-k+1个节点的数据域
  2. 定义快慢指针,快的先走K-1步。

易错点

倒数第k个,与倒数第一个pHead->next==nullptr的节点相差k-1,而不是k

源码

class Solution {
public:
    ListNode* FindKthToTail(ListNode* pListHead, unsigned int k) {
        if(pListHead==nullptr||k==0)
            return nullptr;
        ListNode* pHead=pListHead;
        ListNode* pAfter=pListHead;
        for(int i=0;inext==nullptr的节点相差k-1
        {
            if(pHead->next!=nullptr)
                pHead=pHead->next;
            else
                return nullptr;
        }
        while(pHead->next!=nullptr)
        {
            pHead=pHead->next;
            pAfter=pAfter->next;
        }
        return pAfter;
    }
};

你可能感兴趣的:(链表操作,查找链表中倒数第K个值)