数据结构学习--双向链表一、管理单向链表的缺点分析(1)单向链表,查找的方向只能是一个方向,而双向链表可以向前或者向后查找(2)单向链表不能自我删除,需要靠辅助节点,而双向链表,则可以自我删除,所以前面我们在单链表删除节点时,总是找到temp,temp是待删除节点的前一个节点二、双向链表如何完成遍历,添加,修改和删除示意图思路:1.遍历方法和单链表一样,只是可以向前,也可以向后查找2.添加(...
数据结构学习--单链表面试题前言本篇将讲述之前新浪、百度、腾讯的单链表的面试题单链表面试题(1)求单链表中有效节点的个数代码//方法:获取到单链表的节点的个数(如果是带头节点的链表,需求不统计头节点) public static int getLength(HeroNode head){ if(head.next == null){//空链表 return 0; ...
数据结构学习--链表一、链表(Linked List)介绍链表是有序的列表,但是它在内存中是存储如下:上图总结(1)链表是以节点的方式来存储,是链式存储(2)每个节点包含data域,next域:指向下一个节点。(3)如图:发现链表的各个节点不一定是连续存储(4)链表分带头节点的链表和没有头节点的链表,根据实际的需求来确定单链表(带头节点)逻辑结构示意图如下二、单链表的应用实例使用带head头...
数据结构学习--环形队列(二)前言上篇中,使用数组来模拟队列会出现数组使用一次就不能使用,没有达到复用效果的问题,本篇通过数组模拟环形队列来解决该问题。概述数组模拟环形队列对前面的数组模拟队列的优化,充分利用数据,因此将数组看做是一个环形的。(通过取模的方式来实现即可)分析说明:尾索引的下一个为头索引时表示队列满,即将队列容量空出一个作为约定,这个在做判断队列满的时候需要注意(rear+1)...
数据结构学习--队列(一)前言在队列开篇之前使用一个小案例来感受一下生活中队列的使用场景:去银行办业务,然后取挂号排队。概述队列介绍1.队列是一个有序的列表,可以用数组或 链表来实现。2.遵循先入先出的原则,即:先存入队列的数据,要先取出。后存入的要后取出示意图:使用数组模拟队列的示意图数组模拟队列思路1.队列本身是有序列表,若使用数组的结构来存储队列的数据,则队列数组的声明如下图, 其中 ...
数据结构学习--稀疏数组前言先看一个实际的需求:编写一个五子棋程序,其中有存盘退出和续上盘的功能。分析:因为该二维数组的很多值是默认值0, 因此记录了很多没有意义的数据.->稀疏数组。基本介绍当一个数组中大部分元素为0,或者为同一个值的数组时,可以使用稀疏数组来保存该数组。稀疏数组的处理方法是:(1)记录数组一共有几行几列,有多少个不同的值(2)把具有不同值的元素的行列及值记录在一个小...
数据结构--散列一、概念散列表:根据给定的关键字来计算出关键字在表中的地址的数据结构。也就是说,散列表建立了关键字和存储地址之间的一种直接映射关系,散列函数:一个把查找表中的关键字映射成该关键字对应的地址的函数,记为:Hash(key)=Addr。散列函数可能会把两个或两个以上的不同关键字映射到同一地址,称这种情况为“冲突”,这些发生碰撞的不同关键字称为同义词。二、散列函数和冲突的处理方法构...
【转载】Java中newInstance()和new()前言在讲散列和散列码开篇之前,需要对底层的知识做一个补充。概述在Java开发特别是数据库开发中,经常会用到Class.forName()这个方法。通过查询Java Documentation我们会发现使用Class.forName()静态方法的目的是为了动态加载类。在加载完成后,一般还要调用Class下的newInstance()静态方...
容器深入研究--SortedMap和LinkedHashMap前言本篇将讲述《Java编程思想》第17.8.2小节,SortedMap和第17.8.3小节,LinkedHashMap概述使用SortedMap,可以确保键处于排序状态。这使得它具有额外的功能,这些功能由SortedMap接口中的下列方法提供:Comparator comparator():返回当前Map使用的Comparato...