您的位置:首页 > Web前端

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

2017-11-20 11:22 375 查看
【思路】利用两个相隔为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             else
22                 return NULL;
23         }
24
25         while(q->next != NULL){
26             q = q->next;
27             p = p->next;
28         }
29         return p;
30     }
31 };


 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: