链表中倒数第k个节点 (相关的 单链表的中间节点!)

 //这里是让 头指针先走  走到k-1位置时 再让后面的指针走; 别马虎写错了哈   到时候后面的指针 是指向头的哈!!!! 或者以初始化就指向头即可!!!!!
/*
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==nullptr||k==0  )//鲁棒性先类型检查
    return  nullptr;
  
        
     ListNode* before=pListHead; //前行  
     ListNode* after = nullptr;   
   
      for ( unsigned int i=0;i<k-1;i++)
     {
       if(before->next!=nullptr) //这个阶段是不应该到达尾部的
       {
         before=before->next;    
       }else
       {
           return nullptr;
       }
          
     }
    
    
   while(before->next!=nullptr)//走到尾部
     {    
         before=before->next; 
         after=after->next;  
     }
        
       return  after;

    }
};

原文地址:https://www.cnblogs.com/cgy1012/p/11383630.html