剑指offer 链表中倒数第k个结点
- 题目描述
输入一个链表,输出该链表中倒数第k个结点。
- C++解法
双指针,用时0ms。
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 (k == 0 || pListHead == NULL)
return NULL;
ListNode* p1 = pListHead;
ListNode* p2 = p1;
bool flag = true;
for (int i = 0; i < k-1; i++){
if (p2->next == NULL){
flag = false;
break;
}
p2 = p2->next;
}
while (p2->next != NULL){
p1 = p1->next;
p2 = p2->next;
}
if (!flag)
return NULL;
return p1;
}
};