![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
文章平均质量分 54
小王不迷糊
坚持
展开
-
HashMap与HashSet
本文主要对HashMap和HashSet进行实现,以及方法进行总结,最后引入哈希冲突的避免和解决方法。原创 2022-08-25 16:47:13 · 568 阅读 · 0 评论 -
Iterable、Collection、List等接口
本篇文章总结了常用的接口list、queue、set、map等之间的关系以及使用方法。原创 2022-08-15 15:35:16 · 2251 阅读 · 0 评论 -
数据结构--图(DFS、BFS)
文章目录一、图二、基本使用1.图的简单创建2.DFS3.BFS一、图图是一种数据结构,其中结点可以具有0个或多个相邻元素。两个结点之间的连接称为边。结点也称为顶点。二、基本使用1.图的简单创建存储方式:(1)邻接矩阵;(2)邻接表。代码如下(示例):// 构造器 public Graph(int n){ edges = new int[n][n]; vertexList = new ArrayList<String>(n);原创 2021-12-12 11:30:22 · 288 阅读 · 0 评论 -
数据结构--平衡二叉树
平衡二叉树一、平衡二叉树二、实现1.左旋2.右旋3.双旋一、平衡二叉树要求左子树的高度与右子树的高度只差不超过1。二、实现1.左旋如果rightHeight() - leftHeight() > 1,则左旋转(1)新创建一个节点,新节点的值为当前根节点的值;(2)让新节点的左结点指向当前结点的左节点;(3)让新节点的有节点指向当前节点有节点的左节点;(4)把当前节点的值换为右子结点的值;(5)最后把当前结点的左子结点设置为新结点。代码如下(示例)://左旋转 rightHei原创 2021-12-11 15:22:45 · 90 阅读 · 0 评论 -
数据结构--二叉树排序树
二叉排序树前言一、二叉排序树二、实现1.添加结点2.删除结点前言一、二叉排序树BST:任何一个非叶子节点,要求左子节点的值小;右子节点的值比当前节点的值大;相同的值,可以放在左子节点或右子节点。二、实现1.添加结点代码如下(示例):// 添加结点 public void add(Node node){ if(node == null){ return; } if(node.no < this.no){原创 2021-12-09 22:25:49 · 328 阅读 · 0 评论 -
数据结构--顺序存储二叉树
文章目录前言一、顺序存储二叉树二、实现1.前序、中序、后序遍历2.运行结果前言一、顺序存储二叉树使用数组对二叉树的每个结点从左至右依次进行存储。二、实现1.前序、中序、后序遍历代码如下(示例):class ArrBinaryTree{ private int[] arr; public ArrBinaryTree(int[] arr) { this.arr = arr; } // 重载 public void preOrder(){原创 2021-12-09 11:18:46 · 634 阅读 · 0 评论 -
数据结构--二叉树
二叉树前言一、二叉树1.结点创建2.二叉树创建二、功能实现1.遍历(前序、中序、后序)2.查找(前序、中序、后序)3.删除前言一、二叉树1.结点创建(1)包括左孩子和右孩子;代码如下(示例):class TreeNode{ private int no; private String node; private TreeNode left; private TreeNode right; public TreeNode(int no, String n原创 2021-12-09 10:44:14 · 411 阅读 · 0 评论 -
数据结构--查找
查找一、种类二、实现1.线性查找2.二分查找3.插值查找4.斐波那契查找总结一、种类(1)线性查找;(2)二分查找;(3)插值查找;(4)斐波那契查找。二、实现1.线性查找代码如下(示例):import numpy as npimport pandas as pdimport matplotlib.pyplot as pltimport seaborn as snsimport warningswarnings.filterwarnings('ignore')import原创 2021-12-08 21:49:25 · 198 阅读 · 0 评论 -
数据结构--排序(冒泡、快速、希尔、归并、基数)
排序一、排序种类二、排序实现1.冒泡排序2.选择排序3.插入排序4.希尔排序5.快速排序6.归并排序7.基数排序总结一、排序种类1.交换排序(1)冒泡排序(2)快速排序2.插入排序(1)直接插入排序(2)希尔排序3.选择排序(1)简单选择排序(2)堆排序(与二叉树有关,暂时先不实现)4.归并排序5.基数排序二、排序实现1.冒泡排序思想:(1)对于每两个相邻的元素进行交换,如果是从小到大排序,则每次将最大的交换到最后一位,需要执行(array.length-1)次,每次需要交换原创 2021-12-07 20:26:23 · 341 阅读 · 0 评论 -
数据结构--递归
递归一、递归遵循规则二、引入经典案例1.迷宫2.八皇后一、递归遵循规则(1)执行一个方法时,就创建一个新的受保护的独立空间(栈空间);(2)方法的局部变量是独立的,不会相互影响;(3)如果方法中使用的是引用类型变量(比如数组),就会共享该引用类型的数据;(4)递归必须向退出递归的条件逼近,否则就是无限递归,出现StackOverflowError;(5)当一个方法执行完毕,或遇到return,就会返回,遵守谁调用,就将结果返回给谁,同时当方法执行完毕或者返回时,该方法也就执行完毕。二、引入.原创 2021-12-05 14:54:47 · 485 阅读 · 0 评论 -
数据结构--前缀、中缀和后缀表达式
文章目录一、定义二、具体实现1.后缀表达式2.中缀转后缀表达式一、定义(1)前缀表达式(波兰表达式):从右到左扫描表达式,遇到数字时压入数字栈,遇到运算符时,弹出两个栈顶的两个数,进行计算,并将结果入栈;重复止到表达式最左端。(2)中缀表达式:就是常见的运算表达式,和人的思考方式是一致的,但是与计算机来说不好操作。(3)后缀表达式(逆波兰表达式):与前缀表达式相似,只是运算符位于操作数之后。二、具体实现1.后缀表达式代码如下(示例):// 设置一个列表接收表达式 public st原创 2021-12-04 23:29:59 · 1400 阅读 · 0 评论 -
数据结构--栈实现计算器
计算器前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结前言只计算 + - * / 一、pandas是什么?示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。二、使用步骤1.引入库代码如下(示例):import numpy as npimport pandas as pdimport matplotlib.pyplot as pltimport seaborn as snsimport warningswarnings原创 2021-12-04 13:17:49 · 794 阅读 · 0 评论 -
数据结构--栈的实现
栈一、栈的实现方式1.方式一:利用数组2.方式二:利用链表二、实际操作1.方式一2.方式二一、栈的实现方式1.方式一:利用数组思路:(1)创建一个数组,以及栈顶top;(2)入栈(push):先top++;再添加到数组;(3)出栈(pop):从栈顶开始出栈,value = stack[top];top–;2.方式二:利用链表思路:(1)栈是先进后出的,可以直接添加到链表后面,就是出栈和打印链表的时候可能有点麻烦;可以将每个添加的结点都放在头结点的后面,方便出栈。(2)出栈的时候,若是添原创 2021-12-03 14:11:38 · 666 阅读 · 0 评论 -
数据结构--约瑟夫(单循环链表)
约瑟夫一、约瑟夫二、实现1.创建2.出圈3.结果展示一、约瑟夫就比如丢手绢问题,所有的小孩围成一个圈,每被叫到的号丢出去,直到圈中只剩一个孩子。1、创建单循环链表(1-nums)思路:(1)先创建一个first结点,让他永远指向第一个结点;(2)通过循环创建每个连续的结点(boy);(3)创建一个curBoy用来指向每一个添加的结点,如果结点为1,则需boy指向first,形成一个闭环;否则,则需先让curBoy指针指向下个结点(boy),再让boy指向first,形成闭环。2、叫号出原创 2021-12-03 12:01:44 · 157 阅读 · 0 评论 -
数据结构--双链表
双链表一、双链表二、具体实现1.增加2.修改3.删除4.运行结果一、双链表1、结构(1)比单链表多了一个前驱指针(pre)2、基本功能(1)增加newLinkNode.next = temp.next;temp.next.pre = newLinkNode;temp.next = newLinkNode;newLinkNode.pre = temp;注意:当在最后一个结点添加结点时不需要执行前两句,不然空出现空指针异常。(2)修改这个功能和单链表的操作基本一样(3)删除temp原创 2021-12-02 19:18:35 · 693 阅读 · 0 评论 -
数据结构--单链表(实例)
单链表例题前言1.得到倒数第K结点2.单链表反转3.单链表反转(使用栈实现,不改变原始链表的结构)4.合并两个顺序链表前言1.得到倒数第K结点代码如下(示例):// 查找链表的倒数第K个结点 public void getKNode(int k){ LinkedNode temp = head.next; int size = getLinkedSize(); int kNo = size - k + 1; boolean f原创 2021-12-01 22:15:22 · 603 阅读 · 0 评论 -
数据结构--单链表
单链表一、单链表的创建二、基本操作1.按顺序添加结点2.修改3.删除4.打印一、单链表的创建单链表的结点包括编号(按顺序)、结点信息以及指针。class HeroNode{ public int no; public String name; public String nikename; public HeroNode next; public HeroNode(int no, String name, String nikename) {原创 2021-12-01 22:00:02 · 226 阅读 · 0 评论 -
数据结构--数组(循环队列)
循环队列--数组实现一、实现思路1、创建实现类(circleQueueArray)2、在实现类里面写入以下方法二、实现1.运行结果2.实现代码一、实现思路1、创建实现类(circleQueueArray)2、在实现类里面写入以下方法front = rear = 0;(1)向队列添加数据rear = (rear + 1) % MaxSize(2)从队列取出数据front = (front + 1) % MaxSize(3)展示队列注意:循环队列的有效长度为:(rear + MaxSiz原创 2021-11-30 11:35:54 · 362 阅读 · 0 评论