剑指Offer——(14)链表中倒数第k个结点
2017-05-07 18:03
239 查看
题目描述:
输入一个链表,输出该链表中倒数第k个结点。
实现如下:
输入一个链表,输出该链表中倒数第k个结点。
实现如下:
//在线测试用例依旧是无头链表→_→ //最后一个节点定义为倒数第一个节点 //1->2->3->4->5 //p s // p s //eg.寻找倒数第3个节点 k-1=2 //要想一次遍历找到倒数第k个节点,关键在于最后一个节点与倒数第k个节点之间相差k-1个节点 //所以要保证两个指针之间一直保持k-1个节点差 //健壮性: //1.传入空指针 //2.k为无符号正数,k<1 //3.不存在倒数第k个节点 /*节点结构体定义 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 (pListHead == NULL || k < 1) return NULL;//传入空指针、k无效 ListNode *p = pListHead; ListNode *s = pListHead; int num = 0;//记录s指针移动的次数 while (s->next != NULL)//直到遍历完此链表 { s = s->next; ++num; //当s移动次数大于等于k时,才能让p开始移动,此时两指针保持k-1距离 if (num >= k) p = p->next; } //如果s移动次数都小于两者必须的间距,说明不存在倒数第k个节点 if (num < k - 1) return NULL; return p; } };
相关文章推荐
- 剑指Offer面试题14使数组中的奇数在偶数前,面试题15链表倒数第k个结点
- 剑指Offer(14)______链表中倒数第k个结点
- 剑指offer(14)—链表中倒数第k个结点
- 剑指offer——链表中倒数第k个结点
- 【剑指offer】14链表中倒数第k个结点
- 剑指offer·-链表中倒数第k个结点
- 剑指offer_链表---链表中倒数第k个结点
- 《剑指offer》(面试题15):链表中倒数第k个结点
- 剑指offer系列-T15链表中倒数第k个结点
- 《剑指Offer》 链表中倒数第k个结点
- 剑指Offer——链表中倒数第k个结点
- 剑指offer(11)-链表中倒数第k个结点
- 剑指offer:链表中倒数第k个结点
- 《剑指Offer》面试题:寻找链表中倒数第k个结点
- (C++)剑指offer-14:链表中倒数第k个结点(代码的鲁棒性)
- 剑指Offer—编程题15(链表中倒数第k个结点)
- 剑指offer——面试题15:链表中倒数第k个结点
- 《剑指offer》链表中倒数第k个结点
- 《剑指Offer》面试题15:链表中倒数第k个结点
- 《剑指Offer》学习笔记--面试题15:链表中倒数第k个结点