数据结构与算法(4)----->链表、二分搜索
1. 链表的基本概念
- 链表和数组一样都是一种线性结构;
- 数组是一段连续的存储空间;
 - 链表空间不一定保证连续,是临时分配的;
 
 - 链表的分类
- 按方向:
- 单链表:每个节点只能通过next指针指向下一个节点;
 - 双链表:除了可以用next指针之外,还可以用previous指针,指向前一个节点;
 
 - 按有无环:
- 普通链表
 - 循环链表(首尾相接的链表,最后一个元素的next指针指向第一个元素;对于双链表,第一个元素的previous指针还需要指向最后一个元素)
 
 
 - 按方向:
 
2. 单链表的翻转操作
- 当链表为空或者长度为1时,特殊处理;
 - 其他的单链表,采用如下方式:
- 假设前面已经翻转好的部分头部为head,当前节点是now
- 将now节点的next指针指向head;
 - 将now节点设置为新的翻转完成的节点的头部head now;
 - 将之前now节点的下一个节点的next指针,指向head now,如此类推~
 
 
 - 假设前面已经翻转好的部分头部为head,当前节点是now
 
3. 二分搜索常用场景
- 在有序序列中查找一个数;
- 例如,给定一个数组arr,判断整数m是否在arr之中(思路:判断arr中间的数mid与m的大小关系,如果m>mid,则mid左边部分都小于m(因为有序),同样的方法,对mid与右半部分之间的元素再次选取mid2进行同样的搜索操作!每次搜索范围减半,如果最后搜索到0都没找到m,则m不在arr数组之中!返回false)
 
 - 二分搜索还能用于无序序列之中;
 
数据结构与算法(4)----->链表、二分搜索的更多相关文章
- Java数据结构和算法(四)--链表
		
日常开发中,数组和集合使用的很多,而数组的无序插入和删除效率都是偏低的,这点在学习ArrayList源码的时候就知道了,因为需要把要 插入索引后面的所以元素全部后移一位. 而本文会详细讲解链表,可以解 ...
 - C语言 - 基础数据结构和算法 - 企业链表
		
听黑马程序员教程<基础数据结构和算法 (C版本)>,照着老师所讲抄的, 视频地址https://www.bilibili.com/video/BV1vE411f7Jh?p=1 喜欢的朋友可 ...
 - C语言 - 基础数据结构和算法 - 单向链表
		
听黑马程序员教程<基础数据结构和算法 (C版本)>,照着老师所讲抄的, 视频地址https://www.bilibili.com/video/BV1vE411f7Jh?p=1 喜欢的朋友可 ...
 - Java数据结构和算法之链表
		
三.链表 链结点 在链表中,每个数据项都被包含在‘点“中,一个点是某个类的对象,这个类可认叫做LINK.因为一个链表中有许多类似的链结点,所以有必要用一个不同于链表的类来表达链结点.每个LINK对象中 ...
 - JavaScript 数据结构与算法3(链表)
		
学习数据结构的 git 代码地址: https://gitee.com/zhangning187/js-data-structure-study 1.链表 本章学习如何实现和使用链表这种动态的数据结构 ...
 - 数据结构和算法 – 8.链表
		
8.1.数组存在的问题 在处理列表的时候数组是常用的数据结构.数组可以对所存储的数据项提供快速地存取访问,而且它很易于进行循环遍历操作.当然,数组已经是语言的一部分了,用户不需要使用额外的内存,也不需 ...
 - JavaScript数据结构与算法(六) 链表的实现
		
// 链表存储有序的元素集合,但不同于数组,链表中的元素在内存中并不是连续放置的.每个 // 元素由一个存储元素本身的节点和一个指向下一个元素的引用(也称指针或链接)组成.下图展 // 示了一个链表的 ...
 - js数据结构与算法--单链表的实现与应用思考
		
链表是动态的数据结构,它的每个元素由一个存储元素本身的节点和一个指向下一个元素的引用(也称指针或链接)组成. 现实中,有一些链表的例子. 第一个就是寻宝的游戏.你有一条线索,这条线索是指向寻找下一条线 ...
 - 用Python实现的数据结构与算法:链表
		
一.概述 链表(linked list)是一组数据项的集合,其中每个数据项都是一个节点的一部分,每个节点还包含指向下一个节点的链接(参考 <算法:C语言实现>). 根据结构的不同,链表可以 ...
 - 数据结构与算法之链表-javascript实现
		
链表的定义: 链表是一种物理存储单元上非连续.非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的.链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成.每个结点 ...
 
随机推荐
- Fakeapp2.2安装,使用简记--------------转载自iJessie
			
原文:https://www.cnblogs.com/iJessie/p/8568377.html 1,硬件和操作系统,支持cuda的Nvidia显卡,8G及以上的内存,Windows10 x64(推 ...
 - SpringBoot学习——运行原理学习及自定义Starter pom
			
例如:pom文件 导入redis jar包 springboot怎么识别和集成? https://blog.csdn.net/flygoa/article/details/68484439 https ...
 - 将web工程部署到tomcat
			
http://blog.csdn.net/lucklq/article/details/7621807 http://jingyan.baidu.com/article/466506582f2f4af ...
 - Unix环境高级编程—进程控制(三)
			
一.解释器文件 解释器文件属于文本文件,起始行形式为: #! pathname[optional-argument] 我们创建一个只有一行的文件如下: #!/home/webber/test/echo ...
 - 经常遇到js的面试题
			
大家都知道在面试的时候,很多前端的必须要问的就是js的问题,最近我们公司也有很多这样的面试,我提了一些个问题,还有我面试的时候面试官面试我的问题汇总,也有百度的别人的,希望对那些刚进入这个行业的有一些 ...
 - Method invoke 方法
			
这个问题要看明白源码才能解决
 - 我的Android进阶之旅------>Android图片处理(Matrix,ColorMatrix)
			
本文转载于:http://www.cnblogs.com/leon19870907/articles/1978065.html 在编程中有时候需要对图片做特殊的处理,比如将图片做出黑白的,或者老照片的 ...
 - JSP九大内置对象的作用和用法总结(转发)
			
jsp九大内置对象: 内置对象/作用域(每一种作用域的生命周期是不一样的): 1, application 全局作用域 2, session 会话作用域 3, request 请求作用域 4, pag ...
 - Oracle数据库基础--存储过程和函数
			
一.存储过程和函数 存储过程: 对一个模块的封装 函数: 功能与存储过程几乎一样 区别: 函数必须通过return 关键字返回一个值 存储过程: 不需要return返回值 参数: 输入型参数 输出型参 ...
 - 【docker】学习笔记一:制作自己的centos6.9镜像
			
前言: 最近开始研究docker,在这里做一个记录. 本来开始想用centos7系列做镜像,毕竟是最新版本的centos,但是centos7有一个严重的bug,就是正常启动的镜像不能使用systemc ...