数据结构学习--双向链表

数据结构学习--双向链表一、管理单向链表的缺点分析(1)单向链表,查找的方向只能是一个方向,而双向链表可以向前或者向后查找(2)单向链表不能自我删除,需要靠辅助节点,而双向链表,则可以自我删除,所以前面我们在单链表删除节点时,总是找到temp,temp是待删除节点的前一个节点二、双向链表如何完成遍历,添加,修改和删除示意图思路:1.遍历方法和单链表一样,只是可以向前,也可以向后查找2.添加(默认添加到双向链表的最后)先找到双向链表的最后这个节点temp.next=newHeroNodenewHeroNode.pre=temp;3.修改思路和原来的单向链表一样4.删除因为是双向链表,因此,...

Java 2020-01-27 PM 1448℃ 0条

数据结构学习--单链表面试题

数据结构学习--单链表面试题前言本篇将讲述之前新浪、百度、腾讯的单链表的面试题单链表面试题(1)求单链表中有效节点的个数代码//方法:获取到单链表的节点的个数(如果是带头节点的链表,需求不统计头节点) public static int getLength(HeroNode head){ if(head.next == null){//空链表 return 0; } int length = 0; //定义一个辅助的变量,这里我们没有统计头节点 HeroNode cur = head.next; while(cur != n...

Java 2020-01-27 PM 1420℃ 0条

数据结构学习--链表

数据结构学习--链表一、链表(Linked List)介绍链表是有序的列表,但是它在内存中是存储如下:上图总结(1)链表是以节点的方式来存储,是链式存储(2)每个节点包含data域,next域:指向下一个节点。(3)如图:发现链表的各个节点不一定是连续存储(4)链表分带头节点的链表和没有头节点的链表,根据实际的需求来确定单链表(带头节点)逻辑结构示意图如下二、单链表的应用实例使用带head头的单向链表实现 水浒英雄排行榜管理完成对英雄人物的增删改查操作。(1)第一种方法在添加英雄时,直接添加到链表的尾部思路分析示意图:添加(创建)思路:1.先创建一个head头节点,作用就是表示单链表的头...

Java 2020-01-26 PM 1298℃ 0条

数据结构学习--环形队列(二)

数据结构学习--环形队列(二)前言上篇中,使用数组来模拟队列会出现数组使用一次就不能使用,没有达到复用效果的问题,本篇通过数组模拟环形队列来解决该问题。概述数组模拟环形队列对前面的数组模拟队列的优化,充分利用数据,因此将数组看做是一个环形的。(通过取模的方式来实现即可)分析说明:尾索引的下一个为头索引时表示队列满,即将队列容量空出一个作为约定,这个在做判断队列满的时候需要注意(rear+1)%maxSize==front [满]rear==front[空]分析示意图:思路如下:front变量的含义做一个调整:front就指向队列的第一个元素,也就是说arr[front]就是队列的第一个元...

Java 2020-01-26 PM 1761℃ 0条

数据结构学习--队列(一)

数据结构学习--队列(一)前言在队列开篇之前使用一个小案例来感受一下生活中队列的使用场景:去银行办业务,然后取挂号排队。概述队列介绍1.队列是一个有序的列表,可以用数组或 链表来实现。2.遵循先入先出的原则,即:先存入队列的数据,要先取出。后存入的要后取出示意图:使用数组模拟队列的示意图数组模拟队列思路1.队列本身是有序列表,若使用数组的结构来存储队列的数据,则队列数组的声明如下图, 其中 maxSize 是该队列的最大容量。 2.因为队列的输出、输入是分别从前后端来处理,因此需要两个变量front及rear分别记录队列前后端的下标,front 会随着数据输出而改变,而 rear则是随着...

Java 2020-01-26 PM 1378℃ 0条

数据结构学习--稀疏数组

数据结构学习--稀疏数组前言先看一个实际的需求:编写一个五子棋程序,其中有存盘退出和续上盘的功能。分析:因为该二维数组的很多值是默认值0, 因此记录了很多没有意义的数据.->稀疏数组。基本介绍当一个数组中大部分元素为0,或者为同一个值的数组时,可以使用稀疏数组来保存该数组。稀疏数组的处理方法是:(1)记录数组一共有几行几列,有多少个不同的值(2)把具有不同值的元素的行列及值记录在一个小规模的数组中,从而缩小程序的规模稀疏数组举例说明其中稀疏数组的第一行元素【0】中的第一个值6表示二维数组有六行,第二个值7表示有7列,8:表示有八个有效值。应用实例1)使用稀疏数组,来保留类似前面的二...

Java 2020-01-24 AM 1401℃ 0条

数据结构--散列

数据结构--散列一、概念散列表:根据给定的关键字来计算出关键字在表中的地址的数据结构。也就是说,散列表建立了关键字和存储地址之间的一种直接映射关系,散列函数:一个把查找表中的关键字映射成该关键字对应的地址的函数,记为:Hash(key)=Addr。散列函数可能会把两个或两个以上的不同关键字映射到同一地址,称这种情况为“冲突”,这些发生碰撞的不同关键字称为同义词。二、散列函数和冲突的处理方法构造散列函数的tips:散列函数的定义域必须包含全部需要存储的关键字,而值域的范围则依赖于散列表的大小或地址范围。散列函数计算出来的地址应该能等概率、均匀地分布在整个地址空间,从而减少冲突的发生。散列函...

其它 2020-01-21 AM 2504℃ 0条

【转载】Java中newInstance()和new()

【转载】Java中newInstance()和new()前言在讲散列和散列码开篇之前,需要对底层的知识做一个补充。概述在Java开发特别是数据库开发中,经常会用到Class.forName()这个方法。通过查询Java Documentation我们会发现使用Class.forName()静态方法的目的是为了动态加载类。在加载完成后,一般还要调用Class下的newInstance()静态方法来实例化对象以便操作。因此,单单使用Class.forName()动态加载类是没有用的,其最终目的是为了实例化对象。newInstance()和new的区别newInstance()是一个方法,而n...

Java 2020-01-20 PM 2534℃ 1条

容器深入研究--SortedMap和LinkedHashMap

容器深入研究--SortedMap和LinkedHashMap前言本篇将讲述《Java编程思想》第17.8.2小节,SortedMap和第17.8.3小节,LinkedHashMap概述使用SortedMap,可以确保键处于排序状态。这使得它具有额外的功能,这些功能由SortedMap接口中的下列方法提供:Comparator comparator():返回当前Map使用的Comparator;或者返回null,表示以自然方式排序。T firstKey():返回Map中的第一个键。T lastKey():返回Map中的最末一个值。SortedMap subMap(fromKey,toKe...

Java 2020-01-19 AM 1929℃ 0条

Jenkins安装

Jenkins安装今天小编不是在踩坑就是在踩坑的路上......一、安装JDK因为Jenkins是通过Java开发的,所以在安装Jenkins之前需要先安装JDK本篇将比在阐述JDK的安装步骤,如果需要可以参考文章:Linux服务器搭建JavaWEB项目(一)二、Jenkins安装与启动(1)下载jenkins(此处可能需要修改一下版本号)wget https://pkg.jenkins.io/redhat/jenkins-2.83-1.1.noarch.rpm或将jenkins-2.83-1.1.noarch.rpm上传至服务器(2)安装jenkinsrpm -ivh jenkins-...

工具 2020-01-18 AM 1989℃ 0条