题目描述
输入一个链表,输出该链表中倒数第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) {
if(pListHead==nullptr||k==0)
return nullptr;
ListNode* p=pListHead;
//第一个节点先走k步
for(int i=0;i<k-1;i++)
{
//如果提前走到头,链表长度小于等于k
if(p->next==nullptr)
return nullptr;
p=p->next;
}
ListNode* behind=pListHead;
//走到最后一个,结束
while(p->next!=nullptr)
{
p=p->next;
behind=behind->next;
}
return behind;
}
};