/*
struct ListNode {
int val;
struct ListNode *next;
ListNode(int x) :
val(x), next(NULL) {
}
};*/
class Solution {
public:
ListNode* FindKthToTail(ListNode* pListHead, unsigned int k) {
ListNode *first=NULL,*second=NULL;
//两个指针都指向头结点
first=pListHead;
second=pListHead;
//记录k值
int n=k;
//记录节点的个数
int count=0;
//first指针先跑,并且记录节点数,当first指针跑了k-1个节点后,second指针开始跑,
//当first指针跑到最后时,second所指指针就是倒数第k个节点
//就像两把尺子 first与second先构成一个长度为k的尺子 再同时向后移动 当尾部对齐的时候 就是指向k的时候
while(first!=NULL){
first=first->next;
count++;
if(k<=0){
second=second->next;
}
else{
k--;
}
}
//如果节点个数小于所求的倒数第k个节点,则返回空
if(count<n) return NULL;
return second;
}
};
剑指offer 链表中倒数第k个结点
最新推荐文章于 2020-05-27 13:15:11 发布