题目描述
输入一个链表,输出该链表中倒数第k个结点。
思路:两个指针p 和q,q先走k个位置,然后p q一起走,当q到达末尾节点时,p为倒数第k个节点
/*
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 == NULL)
return NULL;
ListNode* p = pListHead;
ListNode* q = pListHead;
ListNode* s = pListHead;
int count = 0;
while(s != NULL)
{
s = s->next;
count++;
}
if(k >count )
{
return NULL;
}
for(int i = 0;i < k ;i++)
{
q = q->next;
}
while(q != NULL)
{
q = q->next;
p = p->next;
}
return p;
}
};