剑指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;
	}
};