剑指offer 链表中倒数第k个结点

剑指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;
	}
};
弹钢琴的猫 /
Published under (CC) BY-NC-SA in categories 算法  tagged with 剑指offer