面试题15:链表中倒数第k个结点
2015-07-02 15:08
399 查看
题目:输入一个链表,输出该链表中倒数第k个结点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾结点是倒数第1个结点。例如
一个链表有6个结点,从头结点开始它们的值一次是1、2、3、4、5、6.这个链表的倒数第3个结点是值为4的结点。
链表结点定义如下:
本题需要注意代码的鲁棒性,即需要注意当head为空,k为0,或者k的值过大时的情况。
一个链表有6个结点,从头结点开始它们的值一次是1、2、3、4、5、6.这个链表的倒数第3个结点是值为4的结点。
链表结点定义如下:
struct ListNode { int val; ListNode* next; }
ListNode* findKthToTail(ListNode* head, int k) { ListNode* p = head; ListNode* q = head; if (head == NULL || k == 0) return NULL; //q向前走k-1步 for (int i = 1; i < k; ++i) { if (q) q = q->next; else return NULL; } while (q->next) { p = p->next; q = q->next; } return p; }
本题需要注意代码的鲁棒性,即需要注意当head为空,k为0,或者k的值过大时的情况。
相关文章推荐
- 完美世界实习面试总结
- 黑马程序员--OC学习笔记之代理模式的简单分析
- 程序员职业规划:让自己变得重要(转)
- 转载:一个平庸程序员的自白(豆瓣深度好文)
- [java面试]关于多态性的理解
- Hibernate的10个常见面试问题及答案
- 本科生面试总结,以及offer选择
- 华为公司java面试题及答案
- 不只是给面试加分 -- Java WeakReference的理解与使用
- 传统IT转互联网面试经验分享
- iOS经典面试题
- 黑马程序员——Java基础---多线程
- 黑马程序员——高新技术---反射
- Java面试常见知识点
- 面试记录
- 创优翼职场新解:八招职场新人必学的职场法则
- 黑马程序员---String类和基本数据类型包装类
- 初级面试题
- Android面试总结
- 被问概率达99%的面试问题