查找单链表的中间节点
2015-07-26 17:18
225 查看
因为单链表只能向后查找的原因,查找单链表的中间节点,最一般的解法是,先遍历一次链表得到链表的长度,然后再遍历一半链表,得到链表中间元素。
还有一种比较机智的办法是,利用快慢指针,设两个指针,一个指针每次走一步,一个指针每次走两步,当每次走两步的指针到达链表尾部的时候,每次走一步的指针刚好到达链表中间。
还有一种比较机智的办法是,利用快慢指针,设两个指针,一个指针每次走一步,一个指针每次走两步,当每次走两步的指针到达链表尾部的时候,每次走一步的指针刚好到达链表中间。
Node * findMiddleNodeOfLinedList(Node *head) { //判断空链表、单节点链表 if(null == head || null == head->next) { return head; } Node *p1 = *p2 = head; while(null != p2->next && null != p2->next->next ) { p2 = p2->next->next; p1 = p1->next; } return p1; }
相关文章推荐
- Volley 简介
- 技术向:一文读懂卷积神经网络
- 使用JQuery Deferred对象的then() 解决多个AJAX操作顺序依赖的问题
- js数组转换成json数组(包含extjs的checkbox勾选项获取办法)
- [FOJ 1891] 升降序列
- WTL中CListViewCtrlT的GetItemText的实现分析
- 用Fluentd实现收集日志到HDFS(上)
- redis事务及事务乐观锁
- BFS
- 剑指offer_面试题6_重建二叉树(分解步骤,逐个击破)
- Poj 1655 Balancing Act (树的重心)
- php检测文本的编码
- Rectangle Area
- Volley 实现原理解析
- [未完]散列_散列函数
- ACdream DP专题训练
- Matrix理论与应用详解
- 人性漫画:一个人成功前和成功后赤裸裸的区别 人成功前后对比 成功人发展由来前后结果
- 语句和函数
- [iOS]类似新浪微博或者人人客户端中,中间UITabBarItem只有图片,使图片居中的方法