题目描述
输入一个链表,输出该链表中倒数第k个结点。
思路:定义一个标记指针和res指针均指向头节点,标记先走K步,然后res指针再和标记指针同时往后走。
标记指针走到最后那个节点时,res指针指向的节点就是该链表中倒数第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) {
ListNode *p = pListHead;
if(!p || !k) return NULL; //如果p为空 或者 k为0
ListNode *r = pListHead;
for(int i=0; i<k-1; ++i)
{
if(p->next)
p = p->next;
else return NULL; // 如果k大于链表的长度
}
while(p->next)
{
p = p->next;
r = r->next;
}
return r;
}
};