题目描述
输入一个链表,输出该链表中倒数第k个结点。
时间限制:1秒 空间限制:32768K 热度指数:527520
本题知识点: 链表
思路
跟某年408考研题目一样,就是先让一个结点指向正数第K个,然后令一个新的结点从头开始,指向第一个,新结点和第K个结点依次指向下个结点,直到第K个结点指向尾结点,此时新结点即倒数第K个结点
/*
struct ListNode {
int val;
struct ListNode *next;
ListNode(int x) :
val(x), next(NULL) {
}
};*/
class Solution {
public:
ListNode* FindKthToTail(ListNode* p, unsigned int k) {
if (p==NULL||k==0) return NULL;
unsigned int t=1;
ListNode* a=p;
while(a->next&&t<k)
{
t++;
a=a->next;
}
if(t<k)
return NULL;
while(a->next)
{
p=p->next;
a=a->next;
}
return p;
}
};