[剑指Offer] 14.链表中倒数第k个结点

来源:互联网 发布:以色列人工智能武器 编辑:程序博客网 时间:2024/06/05 17:59
【思路】利用两个相隔为k-1个结点的指针进行遍历,当后一个指针移到末尾时,前一个指针就是要求的结点。

 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         if(pListHead == NULL || k == 0)13             return NULL;14         15         ListNode* p = pListHead;16         ListNode* q = pListHead;17         18         for(int i = 0;i < k - 1;i ++){19             if(q->next != NULL)20                 q = q->next;21             else22                 return NULL;23         }24         25         while(q->next != NULL){26             q = q->next;27             p = p->next;28         }29         return p;30     }31 };