`
moxiaomomo
  • 浏览: 44160 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

查找链表的中间节点

阅读更多

使用两个指针,一个指针每次前移一步,一个指针前移两步。
那么当第二个指针走到链表尾端时,第一个指针就是链表中的相对中间节点位置。

代码实现:
template<class T>
T findMidElem(Node<T> *head)
{
	Node<T> *ptr1,*ptr2;
	ptr1=head;   //每次移动一步的指针
	if(ptr1==NULL)return NULL;
	ptr2=head->next; //每次移动两步的指针

	if(ptr2==NULL)return head->data;

	while(ptr2->next!=NULL) //检查ptr2当前是否指向链表末节点
	{
		ptr1=ptr1->next;
		ptr2=ptr2->next->next;
		if(ptr2==NULL)break; //如果指针为NULL则可以退出
	}

	return ptr1->data;
}
1
5
分享到:
评论

相关推荐

    数据结构 链表 查找倒数第N个节点的值 查找中间节点的值

    初始化并建立单链表 遍历链表数据 查找倒数第N个数据 查找中间数据

    常见的链表面试题大汇总

    常见的链表面试题大汇总: 1,创建一个链表结点 2,遍历链表中的所有结点 3,倒序打印链表 4,往链表末尾添加结点 ...10,查找链表中间节点 11,判断链表是否有环 12,判断链表是否有环,并返回环上的节点数目

    一次遍历查找单向链表的中间结点

    仅遍历一次单向链表,找出中间结点,经典C算法,

    关于数据结构中数组、链表、队列、散列表、集合的理解

    经过一上午的学习,对数据...查找链表节点的时间复杂度是O[n],中间插入、删除节点的时间复杂度是O(1)。 栈 栈是一种线性逻辑结构,可以使用数组实现,也可以使用链表实现。包含入栈还有出栈操作,遵循先入后出的原则(F

    单链表的创建,逆转,寻找中位数,倒数第m个节点

    c++实现单链表的创建,逆转,以及找到寻找中间节点,用最小的空间找到倒数第m个节点

    algorithm_and_data_structures:180多个使用C ++的算法和数据结构问题

    链表问题问题解从最后查找链表的第n个节点。 , 添加数字,其中数字的每个数字由链表的节点表示。 将输出作为链接列表。 , 交换链表的节点而不交换数据。 , 迭代和递归地反向链接列表 , 给定一个链表,反转备用...

    数据结构与算法.xmind

    查询链表的中间节点 一个每次走1步,一个每次走两步,走两步的遍历完,然后走一步的指针,那就是中间节点 递归从尾到头输出单链表 只要下面还有数据,那就往下找,递归是从最后往前翻。 反转...

    leetcodepython001-leetcode:用Python刷leetcode

    leetcode python 001 LeetCode LeetCode solutions in ...链表中间节点 链表 简单 辅助数组&快慢指针 019 删除链表倒数第N个节点 链表 中等 快慢指针 141 检测链表是否有环 链表 简单 哈希表&快慢指

    【Java演示】什么是链表?数据结构(三)

    查找节点2. 更新节点3. 插入节点3.1. 尾部插入3.2. 头部插入3.3. 中间插入4. 删除元素4.1. 尾部删除4.1. 头部删除4.1. 中间删除Java实现链表的完整代码二、双向链表 链表:随机存储,顺序访问(读取) 前言 专栏...

    leetcode链表删除环-practice_on_DS_and_ALGO:实践_on_DS_and_ALGO

    leetcode链表删除环数据结构 动态数组 & & 图表 算法 位操作和数字 - 顺便说一下,无符号数与有符号数的区别 排序的稳定性 ...在图中查找强连通分量 ...找到链表的中间节点(leetcode #234) 使用数组实现堆栈(leetcode

    基于python的数据结构学习+源代码+文档说明

    - 2-7 链表中间节点 ## 栈 - 3-1 顺序栈 - 3-2 链式栈 - 3-3 最大栈 ## 队列 - 4-1 顺序队列 - 4-2 链式队列 - 4-3 循环队列 ## 树 - [5-1 树的基本操作](utils.py) - [5-2 二叉树](5.2_binaryTree.py) - [5-3...

    Data-Structures-and-Algorithms

    在链表中查找中间元素- - 链接列表中整数的出现- - 检测链表中的循环- - 查找循环长度-- 检查链接列表是否为回文- - 从排序的链表中删除重复的元素- - 从未排序的链表中删除重复项- - 两个排序的链表的交集- ...

    平衡二叉树 (从问题 -> 解决方案 -> 抽象出概念(如左旋右旋) -> 改进解决方案).zip

    左边重了,中间节点就移到左边,然后把右边的部分 和 新中心的 右边部分合并,就平衡了; 右边重了依然 学习过程 解决实际问题过程是: 问题 -&gt; 解决方案 -&gt; 抽象出概念(如左旋右旋) -&gt; 改进解决方案 咱们拿...

    CircularLinkListdetection:Java中的链表实现

    Java中的链接列表实现 - 添加节点- 删除节点之前- 删除节点之后- 在链表中查找循环/循环- 打破链接列表中的循环-展示- 反转链接列表- 在链表中查找中间元素

    LeetCode解题总结

    1.2 在排序数组被旋转后进行查找 1.3 寻找两个排序数组的中位数 1.4 最长连续序列 1.5 累加和 1.6 移除数组中指定值 1.7 下一个排列 1.8 第n个全排列 1.9 验证数独的正确性 1.10 容纳雨水的量 1.11 旋转图像 1.12 ...

    leetcode有效期-interactive-coding-challenges:我对Python编码面试挑战的解决方案(算法和数据结构)

    删除链表中间的节点 │ 围绕给定值对链表进行分区 │ 将两个数字存储在链表中的数字相加 │ 找到链表循环的开始 │ 判断链表是否为回文 │ 实现链表 │ 确定一个列表是循环的还是非循环的 │ 添加挑战 │ 堆栈和队列...

    LeetCode:LeetCode-Algorithms-DataStructure(使用Python3编写LeetCode)

    链表的中间结点.py 二叉树(及其相关结构) 二叉树的中序遍历.py 二叉树的前序遍历.py 二叉树的后序遍历.py 二叉树的最大深度.py 二叉树的最近公共祖先.py 对称二叉树.py 二叉树的层次遍历.py 二叉树中最大路径和.py ...

    leetcode答案-leetcode:享受

    整数的补码单值二叉树另一棵树的子树两句生僻字仅反转字母重复子串模式查找常见字符有序数组的平方反向链表合并两个排序列表回文链表链表中间删除链表中的节点搜索插入位置在二叉搜索树中搜索N-ary 树预序遍历N元树...

    LeetCode刷题模板.pdf

    2.1.3.3. LC-876:链表的中间节点 37 2.1.3.4. LC-287:寻找重复数 40 2.2. 滑动窗口 43 2.2.1. 什么是滑动窗口 43 2.1.4. 常见题型 44 2.1.5. 注意事项 45 2.1.6. 滑动窗口模板 45 2.1.7. 滑动窗口相关题目 46 2.1....

    寻找主元素leetcode-LeetCode-Problems:LeetCode-问题

    链表中间 14. 交换链表中的节点 15. 好的对数 16. 合并间隔 17. 随机字符串 18. 在二叉树的克隆中找到二叉树的对应节点 19. BST的范围总和 20. 二叉树中序遍历 21. 二叉树先序遍历 22. 二叉树后序遍历 23. 子矩形...

Global site tag (gtag.js) - Google Analytics