题目描述
输入一个链表,输出该链表中倒数第k个结点。
tips:
注意边界条件,以及k与链表的大小。
思路1:定义两个指针,第1个指针先走k-1步,然后两个指针同时走,待第一个指针走到末节点,第二个指针指向倒数第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==nullptr || k==0)
return nullptr;
ListNode* pre = pListHead;
ListNode* last = pListHead;
for(int i=0;i<k-1;i++){
//先走k-1步
pre=pre->next;
if(pre==nullptr)
return nullptr;
}
while(pre->next!=nullptr){
//注:pre!=nullptr error
pre=pre->next;
last