题目描述:输入一个链表,输出该链表中倒数第k个结点。
解题思路:根据题意,如果链表长度不足K则输出NULL;若大于K则设置两个指针,一个正常遍历链表,另一个跟踪第一个指针,跟踪距离为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) {
ListNode *p=pListHead;
ListNode *L=pListHead;
int sum=0;
while(L!=NULL)
{
L=L->next;
sum++;
if(sum>k)
p=p->next;
}
if(sum<k)
return NULL;
return p;
}
};