美文网首页
在一次遍历中,怎么找到单链表的中间元素?

在一次遍历中,怎么找到单链表的中间元素?

作者: 独孤蝴蝶 | 来源:发表于2019-09-24 17:16 被阅读0次

题解:我们可以设立两个指针p和q,初始都指向头指针head,p每次移动两个位置,q每次移动一个位置,当p->next=NULL的时候,q指向的位置就是中间位置元素。

代码:

typedef struct node

{

    char data;

    struct node *next;

}*LinkList;

LinkList  search(LinkList head)

{

        LinkList temp, mid;

      temp = head;

      if(head==NULL)

              return  NULL;

      while(NULL !=head->next && NULL != head->next->next)

    {

              head = head->next->next;

              temp = temp->next;

      }

      mid = temp;

      return mid;

}

亲测有效哦

在一次遍历中,怎么找到单链表的中间元素?

相关文章

  • 在一次遍历中,怎么找到单链表的中间元素?

    题解:我们可以设立两个指针p和q,初始都指向头指针head,p每次移动两个位置,q每次移动一个位置,当p->nex...

  • 有关算法的面试题收集

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

  • 判断链表中是否有环以及其中的扩展衍生问题

    记录关于链表的面试题 判断单链表中是否有环? 直接遍历解法,每遍历一个元素都要和前面遍历过的所有元素进行比较,时间...

  • 4.快速找到未知长度单链表的中间结点(C++)

    给定一个未知长度的单链表,快速求得其中间节点 思路 普通解法:要找到中间结点,首先想到的是通过遍历链表,得到链表的...

  • 5.5. 在循环单链表中搜索

    在循环单链表中搜索需要遍历链表。要在链表中搜索的数据项与链表的每个节点数据匹配一次,如果找到匹配,则返回该数据项的...

  • 如何快速找到未知长度单链表的中间节点

    普通方法: 首先遍历一遍单链表,确定单链表长度L,然后再次从头结点出发,循环L/2次找到单链表的中间结点。算法复杂...

  • 算法学习——线性表

    线性表分为:顺序表和链表 1.腾讯面试题(快速找到未知长度单链表的中间节点?) 普通算法:先遍历一个遍单链表以确定...

  • 025-Reverse List from M to N

    描述 在一个单链表中,在一次遍历中原地逆转从位置m到位置n的元素(1<=m

  • Convert Sorted List to Binary Se

    解决思路: 由于单链表是有序的,可以找到中间位置的元素,作为树的根节点,那么单链表的左半边就是左子树,右半边就是右...

  • 单链表

    单链表 单链表问题与思路 找出单链表的倒数第K个元素(仅允许遍历一遍链表)使用指针追赶的方法。定义两个指针fast...

网友评论

      本文标题:在一次遍历中,怎么找到单链表的中间元素?

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