剑指offer 链表中倒数第k个结点
题目:输入一个链表,输出该链表中倒数第k个结点。
代码:
1 /* 2 struct ListNode { 3 int val; 4 struct ListNode *next; 5 ListNode(int x) : 6 val(x), next(NULL) { 7 } 8 };*/ 9 class Solution { 10 public: 11 ListNode* FindKthToTail(ListNode* pListHead, unsigned int k) { 12 ListNode* p = pListHead; 13 ListNode* q = pListHead; 14 unsigned int i = 0; 15 for( ;p != NULL; i ++){ 16 if( i >= k) 17 q = q->next; 18 p = p->next; 19 } 20 return i < k ? NULL : q; 21 } 22 };
我的笔记:本题的方法是根据,是因为倒数第 k 个的位置与头节点 q 的位置差,正好等于当 p 走过 k 个节点时与尾结点的差。