题目描述
输入一个链表,输出该链表中倒数第k个结点。
解题思路
设原始链表共n个节点;
将原始链表复制到两个新链表p1和p2;
先找到p2的第k个节点;
然后p1和p2同时指向下一个节点,直到p2为nullptr,此时p1指向第n-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 * p1 = pListHead, *p2 = pListHead;
for (int i = 0; i != k; i++){
if (p2 == nullptr)
return nullptr;
p2 = p2->next;
}
while (p2){
p2 = p2->next;
p1 = p1->next;
}
return p1;
}
};