数据结构
文章平均质量分 59
dxt_snow
每天进步一点点
展开
-
最小生成树算法
最小生成树算法最小生成树Prim算法最小生成树 一个有 n 个结点的连通图的生成树是原图的极小连通子图,且包含原图中的所有 n 个结点,并且有保持图连通的最少的边,对于加权图,边的权值之和还应最小。Prim算法算法描述输入:一个加权连通图,其中顶点集合为V,边集合为E;初始化:Vnew = {x},其中x为集合V中的任一节点(起始点),Enew = {},为空;重复下列操作,直到Vnew=V:(1)在集合E中选取权值最小原创 2021-01-16 19:54:34 · 148 阅读 · 0 评论 -
4.6 图的邻接矩阵存储及DFS和BFS
4.6 图的邻接矩阵存储及DFS和BFS介绍代码结果介绍DFS:深度优先搜索BFS:广度优先搜索代码import java.util.ArrayDeque;import java.util.ArrayList;import java.util.Arrays;import java.util.Queue;/** * 1. 图的存储 * 2. dfs: 深度优先搜索, 递归实现 * 3. bfs: 广度优先搜索 * @author dxt * */public class原创 2020-11-18 15:00:04 · 640 阅读 · 0 评论 -
4.5 平衡二叉树
4.5 平衡二叉树功能代码结果总结功能实现了左旋转,右旋转实现了查看树的高度的方法实现了创建一棵平衡二叉树的方法代码/** * AVL树:平衡二叉树 也被称为 平衡二叉搜索树, * 目的:保证较高的查询效率,方便查询搜索 * 特点:它是一棵空树 或 它的左右两棵子树的高度差的绝对值不超过1,并且左右两棵子树都是一棵平衡二叉树。 * 实现: * 构建一棵平衡二叉树 * (1) 左旋转:右子树高度大于左子树 * (2) 右旋转:左子树高度大于右子树 * 注意原创 2020-11-14 20:55:12 · 116 阅读 · 0 评论 -
4.4 使用前序遍历和中序遍历构造二叉树,并绘制树结构
4.4 使用前序遍历和中序遍历构造二叉树,并绘制树形结构代码结果总结代码/** * 使用 前序遍历数组 和 中序遍历数组 构造一棵二叉树,并尝试绘制二叉树的树形结构 * @author dxt * */public class CreateTree { public static void main(String[] args) { //二叉树的前序遍历结果 int[] preOrderList = {6, 3, 1, 2, 5, 9, 7}; //二叉树的中序遍历结果原创 2020-11-12 21:15:13 · 139 阅读 · 0 评论 -
4.3 二叉排序树
4.3 二叉排序树简介代码简介二叉排序树的构造查找二叉排序树中的对应节点删除二叉排序树中的某一节点代码/** * 二叉排序树(binary sort tree BST) * 1. 构造二叉排序树 * 2. 查找对应节点 * 3. 删除二叉树节点 * (1)删除叶子节点 * (2)删除只有一棵子树的节点 * (3)删除有两棵子树的节点 * @author dxt * */public class BinarySortTreeDemo { public sta原创 2020-11-12 17:18:33 · 119 阅读 · 2 评论 -
4.2 赫夫曼树数据结构
4.2 赫夫曼树数据结构介绍代码介绍来自百度百科给定N个权值作为N个叶子结点,构造一棵二叉树,若该树的带权路径长度达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树。路径和路径长度:在一棵树中,从一个结点往下可以达到的孩子或孙子结点之间的通路,称为路径。通路中分支的数目称为路径长度。若规定根结点的层数为1,则从根结点到第L层结点的路径长度为L-1。结点的权及带权路径长度:若将树中结点赋给一个有着某种含义的数值,则这个数值称为该结点的权。结点的带权路径长度为:从根结点到该结点之间的路径长度与该结原创 2020-11-05 20:02:31 · 110 阅读 · 0 评论 -
4.1 二叉树数据结构
4.1 二叉树数据结构简介代码简介三种递归遍历方法,三种递归查找方法,三种迭代遍历方法,一种删除节点方法,一种层次遍历方法。代码代码1import java.util.ArrayDeque;import java.util.ArrayList;import java.util.Deque;import java.util.List;import java.util.Queue;/** * 实现二叉树结构 * 1. 前序、中序、后续遍历 * 2. 前序、中序、后续遍历查找原创 2020-10-28 17:26:58 · 69 阅读 · 0 评论 -
3.3 前缀、中缀和后缀表达式
4.2 前缀、中缀和后缀表达式前言基于三种表达式特点的定义定义示例解释基于二叉树定义前言 我第一次接触这三种表达式是在数据结构课程的二叉树遍历部分,所以下面大部分是从二叉树遍历角度来解释这三种表达式。基于三种表达式特点的定义定义前缀表达式:在前缀表达式中,操作符位于两个操作数之前,操作数从从左到右顺序出现。中缀表达式:在中缀表达式中,每个二元操作符出现在左操作数之后,右操作数之前。后缀表达式:在后缀表达式中,操作符跟在两个原创 2020-09-15 15:34:09 · 1230 阅读 · 0 评论 -
3.2 使用栈结构实现后缀表达式计算器
3.2 使用栈结构实现后缀表达式计算器后缀表达式后缀表达式求值思路后缀表达式计算器实现后缀表达式定义:后缀表达式中,运算符位于操作数(前一个和后一个)之后。示例:算术表达式(3+4)x5-6对应的后缀表达式为3 4 + 5 x 6 -。后缀表达式求值思路思路从左到右扫描后缀表达式,遇到数字时,将数字压入栈,遇到运算符时,弹出栈顶的两个数,用运算符对它们做相应的计算,然后将结果入栈;重复上述过程直到表达式最右端,最后运算得出的值即为表达式的结果。解释当一个算术表达式由中缀表达式形式(1+原创 2020-09-14 20:38:33 · 945 阅读 · 0 评论 -
3.1 栈结构实现
3.1 栈结构实现栈代码实现栈栈是一个先入后出的有序列表。栈中元素的添加与删除都发生在线性表的同一端,允许插入和删除的一端被称为栈顶,另一端被称为栈底。最先入栈的元素在栈底,最后入栈的元素在栈顶。最先删除的元素为最后入栈的元素,最后删除的元素为最先入栈的元素。代码实现主要是想push()和pop()两个方法代码import java.util.Scanner;/** * 实现栈,并测试其功能 * @author dxt * */public class ArraySta原创 2020-08-29 12:38:36 · 187 阅读 · 0 评论 -
2.3 单向环形链表实现及约瑟夫问题
2.3 单向环形链表实现及约瑟夫问题单向环形链表约瑟夫问题代码实现单向环形链表可以带头节点,也可以不带头节点。虽然环形链表是一个环,但在实现过程中,需要确定第一个数据节点,在单向链表的基础上,使最后一个节点指向第一个数据节点,就构成了单向环形链表。约瑟夫问题Josephu(约瑟夫)问题: 设编号为1、2、…、n的n个人围坐一圈,约定编号为k(1<=k<=n)的人从1开始报数,数到m的那个人出列,它的下一位又从1原创 2020-08-28 21:32:31 · 139 阅读 · 0 评论 -
2.2 java实现双向链表
2.2 java实现双向链表双向链表实现的方法实现代码双向链表单链表的缺点(1)查找的方向只能是一个方向(2)单链表不能自我删除,需要依靠辅助节点双向链表的特点(1)查找的方向有两个。(2)可以进行自我删除,删除操作不需要辅助节点实现的方法void add(Node2 node):向双向链表尾添加节点。void printList():从头遍历,输出链表。void update(Node2 node):将链表中与 node节点相同id的节点的 数据(name)改为node节点的数原创 2020-08-25 18:39:18 · 176 阅读 · 0 评论 -
2.1 Java实现单链表
2.1 Java实现单链表链表实现代码链表链表以节点的方式存储数据,特点是:线性结构、链式存储。每个节点包含 data域 和 next域,data域保存数据,next域用来指向下一节点。链表的各个节点在内存中不一定是连续存储。链表分带头节点的链表和不带头节点的链表,头节点指向链表中第一个数据节点。实现代码void add(Node n):将节点n添加到链表尾。在遍历过程中,可以对temp.next进行判断。void addByOrder(Node n):假设链表中 节点 按照 id 从原创 2020-08-25 00:21:27 · 183 阅读 · 0 评论 -
1.2 队列的数组实现
1.2 数组模拟队列队列数组模拟队列一队列队列是一个有序列表,其特点是先入先出,即先进队列的元素先出队列。数组模拟队列一队列只能使用一次,没有实用价值。使用数组模拟此队列时,需要定义四个属性:(1)arr[ ]:数组,用于存放队列中的元素(2)maxSize:int,用于规定队列的最大长度(3)front:int,arr[front+1]始终为队列的第一个元素(4)rear:int,arr[rear]始终表示队列中最后一个元素代码:import java.util.Scanne原创 2020-08-23 22:19:57 · 141 阅读 · 0 评论 -
1.1 稀疏矩阵的存储表示方式
1.1 稀疏矩阵的存储表示方式稀疏矩阵示例代码稀疏矩阵在矩阵中,若数值为0的元素数目远远多于非0元素的数目,并且非0元素分布没有规律时,则称该矩阵为稀疏矩阵。可以通过 同时(1)存储稀疏矩阵的在整体信息(矩阵行数,矩阵列数、非零元素个数)(2)存储稀疏矩阵中非0元素信息(行序号、列序号、对应值)来简化稀疏矩阵的存储。通过2可知,存储稀疏矩阵的这种数据结构是一个多行三列的矩阵,在网上看的尚硅谷韩顺平老师讲的数据结构与算法,老师称此矩阵为稀疏数组。示例代码  原创 2020-08-21 18:19:29 · 1011 阅读 · 0 评论