剑指offer_刷题思路总结_单链表的倒数第k个节点

在这里插入图片描述
解题思路:由于单链表只能从前往后遍历 因此不可能倒着找第k个节点
所以: 1.遍历链表求出,链表长度n;
2.倒数k=正数第n-k个节点

class Solution {
public:
    ListNode* FindKthToTail(ListNode* pListHead, unsigned int k) {
     int n=0;   
     for(auto p=pListHead;p;p=p->next)  //遍历链表 计算链表长度
     {
       n++;
     }
     if(k>n) return nullptr;
    auto p=pListHead;
     for(int i=0;i<n-k;i++)  //寻找倒数k结点
     {
         p=p->next;
     }
    return p;
    }
};

猜你喜欢

转载自blog.csdn.net/ybxcsdn/article/details/88070136