面试题——查找单链表的中间节点
来源:互联网 发布:懒人做饭知乎 编辑:程序博客网 时间:2024/06/03 12:30
链表是基本的数据结构之一,面试题中链表占很大一部分,可见链表操作是非常重要的。我对一些常见的链表操作进行的归纳。
下面的问题为:查找单链表的中间节点。
题目分析:
链表的特点就是有很多的节点,每个节点有数据域和指针域两部分,指针域存放的是下一个节点的地址,根据地址找到下一个节点。链表只能从前到后遍历,不能从后到前遍历。
对于这个问题,我们首先能够想到的就是先遍历一遍整个的链表,然后计算出链表的长度,进而遍历第二遍找出中间位置的数据。这种方式非常简单。
若题目要求只能遍历一次链表,那又当如何解决问题?可以采取建立两个指针,一个指针一次遍历两个节点,另一个节点一次遍历一个节点,当快指针遍历到空节点时,慢指针指向的位置为链表的中间位置,这种解决问题的方法称为快慢指针方法。(面试尽量用这种方式,能够提高印象分)
下面为具体的核心算法:
//查找单链表的中间节点,要求只能遍历一次链表SListNode * FindMidNode(SListNode * phead){ SListNode *fast = phead; SListNode *slow = phead; while (fast) { if (fast->next != NULL) { fast = fast->next->next; } else { break; } slow = slow->next; } return slow;}也可以这样写,更为简洁 while (fast&&fast->next ) { fast = fast->next->next; slow = slow->next; }
本文出自 “无心的执着” 博客,转载请与作者联系!
0 0
- 面试题——查找单链表的中间节点
- 腾讯面试题:查找单链表的中间节点
- 查找单链表的中间节点
- 查找单链表的中间节点
- 面试题三 C/C++面试秘笈 查找单链表的中间元素 --程序员面试题
- 查找单链表中间节点
- 查找单链表中间节点
- 【剑指offer】查找单链表的中间节点
- 数据结构——4 单链表查找中间节点
- 微软,Google面试题 (9) —— 查找链表的倒数第K个节点
- 二叉查找树面试题——计算每个节点的比其值大的节点和
- C 带头节点的单链表查找中间节点
- 快速查找未知长度单链表的中间节点
- 快速查找未知长度单链表的中间节点
- 链表面试题(四)---查找链表的中间节点
- 【面试题】-求未知长度的链表的中间节点(快慢指针)
- 单链表的中间节点
- 算法与数据结构面试题(11)-一次遍历得到链表的中间节点
- define和typedef区别
- 判断数字1在计算机中的存储方式
- 连接函数strcat与strncat
- 单链表
- 数据结构——栈与队列
- 面试题——查找单链表的中间节点
- 类和对象—日期类
- DFS JAVA 模板
- 类和对象—复数类
- 面试题—链表操作
- C语言编写—通讯录(小项目)
- 浅谈为什么Java接口中不允许定义变量------转帖
- android混淆后webview显示问题
- 面试题—链表操作2