美文网首页算法
查找单链表的中间节点

查找单链表的中间节点

作者: 低调_0c1d | 来源:发表于2018-08-15 13:48 被阅读2次

转自:https://www.cnblogs.com/Berryxiong/p/6254329.html
链表是基本的数据结构之一,面试题中链表占很大一部分,可见链表操作是非常重要的。我对一些常见的链表操作进行的归纳。

    下面的问题为:查找单链表的中间节点。

题目分析:

   链表的特点就是有很多的节点,每个节点有数据域和指针域两部分,指针域存放的是下一个节点的地址,根据地址找到下一个节点。链表只能从前到后遍历,不能从后到前遍历。

   对于这个问题,我们首先能够想到的就是先遍历一遍整个的链表,然后计算出链表的长度,进而遍历第二遍找出中间位置的数据。这种方式非常简单。

   若题目要求只能遍历一次链表,那又当如何解决问题?可以采取建立两个指针,一个指针一次遍历两个节点,另一个节点一次遍历一个节点,当快指针遍历到空节点时,慢指针指向的位置为链表的中间位置,这种解决问题的方法称为快慢指针方法。(面试尽量用这种方式,能够提高印象分)
//查找单链表的中间节点,要求只能遍历一次链表  
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;  
    }  

相关文章

  • 查找单链表的中间节点

    转自:https://www.cnblogs.com/Berryxiong/p/6254329.html链表是基本...

  • 单向链表算法

    单向链表 反转单向链表 单链表查找倒数第k个节点 单链表递归倒序打印 单链表排序 单链表删除重复节点

  • 单链表常见面试题

    统计单链表中有效节点的个数 查找单链表中的倒数第k个节点(Sina) 单链表的反转(Tencent) 从尾到头打印...

  • 数据结构-4、数据结构系列之如何查找单链表中倒数第N个节点

    给定一个单链表,查找链表中倒数第n个节点 穷举遍历(两次遍历) 先遍历一遍链表,确定链表中节点的个数length。...

  • 有关算法的面试题收集

    1. 对单链表排序,用代码实现【腾讯】 2. 快速找到未知长度的单链表的中间节点【腾讯】 普通方法:遍历一遍单链表...

  • 876-链表的中间节点

    链表的中间节点 题目 给定一个带有头结点 head 的非空单链表,返回链表的中间结点。 如果有两个中间结点,则返回...

  • 2018-07-26

    合并有顺序的数组 打印两个有序链表的公共部分 在单链表和双链表中删除倒数第k个节点 单链表 双链表 删除链表的中间...

  • 常见算法总结

    链表 单链表反转链表中环的检测两个有序的链表合并删除链表倒数第 n 个结点求链表中间第n个节点

  • 链表-双指针妙用

    1.返回链表的中间节点 给定一个带有头结点 head 的非空单链表,返回链表的中间结点。如果有两个中间结点,则返回...

  • 链表

    节点类 除双向链表外的节点类 双向链表的节点类 单链表 每个节点只指向下一个节点单链表的操作类 双端链表 每个节点...

网友评论

    本文标题:查找单链表的中间节点

    本文链接:https://www.haomeiwen.com/subject/nufwbftx.html