数据结构
随性而活的风
这个作者很懒,什么都没留下…
展开
-
java实现ArrayList和LinkedList[包含接口List和抽象类AbstractList]
java实现ArrayList和LinkedList[包含接口List和抽象类AbstractList]图解首先我们需要定义一个MyList的接口,将ArrayList和LinkedList共同的方法进行定义package com.bingym.list.mylist;public interface MyList<E> { //自定义List接口:内部包含了List的抽象方法 int size();//获取集合的大小 boolean isEmpty();/原创 2020-09-11 15:29:14 · 434 阅读 · 0 评论 -
双向链表实现(java)
双向链表实现(java)java代码实现package com.bingym.linkedlist.doublelist;public class DoubleLinkedList { //双向链表:既存在一个节点的后向节点next域,同时也存在一个节点的前向节点pre //定义属性:头结点head,不包含任何信息,只是作为一个头结点 private Node head = new Node(0,""); public Node getHead() {原创 2020-09-11 14:59:06 · 138 阅读 · 0 评论 -
单向链表实现(java代码)
单向链表实现以及常见的面试题收录(java代码)Java代码package com.bingym.linkedlist;import java.util.Stack;public class SingleLinkedListByOrder { //实现单向链表功能:链表的添加add(可以按照编号index进行插入),链表内容的打印 //内部需要包含一个节点类:内部类/外部类都可以 //定义单向链表的属性 private Node head =new Node(原创 2020-09-11 14:56:19 · 494 阅读 · 0 评论 -
图的广度优先遍历(BFS)---java代码实现
图的广度优先遍历(BFS)—java代码实现广度优先遍历基本思想图的广度优先搜索(Broad First Search) 。类似于一个分层搜索的过程,广度优先遍历需要使用一个队列以保持访问过的结点的顺序,以便按这个顺序来访问这些结点的邻接结点广度优先遍历算法步骤1.访问初始结点v并标记结点v为已访问。2.结点v入队列3.当队列非空时,继续执行,否则算法结束。4.出队列,取得队头结点u。5.查找结点u的第一个邻接结点w。6.若结点u的邻接结点w不存在,则转到步骤3;否则循环执行以下三个步骤原创 2020-09-01 16:01:02 · 1179 阅读 · 2 评论 -
图的深度优先遍历(DFS)---java实现
图的深度优先遍历(DFS)—java实现图遍历介绍所谓图的遍历,即是对结点的访问。一个图有那么多个结点,如何遍历这些结点,需要特定策略,一般有两种访问策略: (1)深度优先遍历 (2)广度优先遍历深度优先遍历基本思想图的深度优先搜索(Depth First Search)(1)深度优先遍历,从初始访问结点出发,初始访问结点可能有多个邻接结点,深度优先遍历的策略就是首先访问第一个邻接结点,然后再以这个被访问的邻接结点作为初始结点,访问它的第一个邻接结点, 可以这样理解:每次都在访问完当前结点后首先访原创 2020-09-01 12:04:52 · 3200 阅读 · 0 评论 -
图的实现(java-邻接矩阵方式实现)
图的实现(java-邻接矩阵方式实现)图:是一种数据结构,其中结点(顶点)可以具有零个或者多个相邻的结点元素,两个结点之间的连接叫做边,结点也可以称为顶点;图的表示方式:第一种:是利用邻接矩阵(用二位数组实现)来进行表示的;第二种:是利用邻接表(用数组+链表实现)来进行表示的;(1)邻接矩阵需要为每个顶点都分配n个边的空间,其实有很多边都是不存在,会造成空间的一定损失.(2)邻接表的实现只关心存在的边,不关心不存在的边。因此没有空间浪费,邻接表由数组+链表组成下面我们使用第一种方式用jav原创 2020-09-01 10:24:12 · 879 阅读 · 1 评论 -
多叉树简单介绍---配以图解
多叉树简单介绍背景二叉树虽然相对于数组和链表,在遍历,查找,删除等方面有着极大的速度的提高,特别是平衡二叉树(AVL树)使得二叉树发挥着极大的优势,但是二叉树同样存在着一些问题:入下图的二叉树所示:二叉树需要加载到内存的,如果二叉树的节点少,没有什么问题,但是如果二叉树的节点很多(比如1亿), 就存在如下问题:问题1:在构建二叉树时,需要多次进行i/o操作(海量数据存在数据库或文件中),节点海量,构建二叉树时,速度有影响问题2:节点海量,也会造成二叉树的高度很大,会降低操作速度.故我们引出了多原创 2020-08-31 22:07:45 · 2804 阅读 · 0 评论