数据结构
文章平均质量分 77
数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率。
Jacky_Feng
这个作者很懒,什么都没留下…
展开
-
【数据结构】二叉搜索树(二叉排序树)、平衡二叉树、红黑树、B树、B+树详解
摘要:本文主要是对常用的树结构进行详解,其中包括二叉搜索树(二叉排序树)、平衡二叉树、红黑树、B树、B+树。原创 2024-08-20 20:56:18 · 361 阅读 · 0 评论 -
【数据结构】哈希表
本文主要介绍了哈希表数据结构以及哈希冲突的解决方案,另外介绍了常用的哈希算法。原创 2024-08-19 22:08:00 · 1001 阅读 · 0 评论 -
【数据结构】归并排序
本文主要介绍了归并排序算法,算法思想、代码实现、算法特性这几方面进行讲解。原创 2024-08-18 18:20:33 · 481 阅读 · 0 评论 -
【数据结构】堆排序
本文介绍了堆排序算法,主要从算法思想流程、代码实现、算法特性进行分析讲解。原创 2024-08-18 15:33:37 · 412 阅读 · 0 评论 -
【数据结构】堆
本文主要介绍了堆的基本概念、堆的代码实现、堆的常见应用。原创 2024-08-18 10:50:08 · 692 阅读 · 0 评论 -
【数据结构】红黑树
本文主要介绍了红黑树的基本概念和基础操作(查找、插入、删除)。原创 2024-01-10 22:07:16 · 1141 阅读 · 0 评论 -
【数据结构】平衡二叉树
本文主要介绍了平衡二叉树的基本概念及基础操作(查找、平衡、插入、删除)。原创 2024-01-04 00:37:33 · 3605 阅读 · 0 评论 -
【数据结构】二叉搜索(查找/排序)树
本文主要介绍了二叉搜索树的基本概念和操作(查找、插入、删除)原创 2024-01-02 13:27:50 · 1424 阅读 · 0 评论 -
【数据结构】排序算法系列
本文主要介绍常见排序算法,并提供了相关算法的详细讲解链接。原创 2023-08-04 16:41:41 · 1277 阅读 · 0 评论 -
【数据结构】队列
摘要:本文主要介绍了队列数据结构,包括队列数据结构的简介和性质,及相关代码实现。原创 2024-08-20 21:14:39 · 388 阅读 · 0 评论 -
【数据结构】单链表之带头结点的单链表
一、单链表相关知识点介绍:1. 结点:结点就是单链表中研究的数据元素,结点中存储数据的部分称为数据域,存储直接后继地址的部分称为指针域。2. 头结点:引入头结点的目的是,将链表首元结点的插入和删除操作与其他结点的插入和删除操作统一起来。(即头指针地址不在发生变化)3. 头指针:头指针始终指向链表第一个元素,当有头结点时头结点就是链表第一个元素。头指针具有标识左右,故头指针命名为链表的...原创 2019-03-12 00:00:01 · 4311 阅读 · 0 评论 -
【数据结构】选择排序(一)——直接选择排序
本文介绍了排序算法中的直接选择排序算法,主要从算法思想、实例演示、代码实现等方面进行详细讲解。原创 2019-03-11 22:27:10 · 9234 阅读 · 2 评论 -
【数据结构】顺序表(二)——不定长顺序表
一、导入:在上一篇我们已经讲了定长的顺序表,但是我们在日常使用中经常是没法确定我们需要多长的顺序表,这时我们的定长顺序表就不适用了,所以我们本篇将介绍一个不定长顺序表来帮助我们解决那种问题。与定长的顺序表相比不定长顺序表的区别在于我们可以通过扩容来进行增添元素的存储单元(动态开辟空间)。二、存储结构与定长的顺序表的存储结构相比较,不定长的顺序表只增加一个元素listsize(用于记录当...原创 2019-03-03 21:11:57 · 323 阅读 · 0 评论 -
【数据结构】顺序表(一)——定长顺序表
一、简介顺序表是在计算机内存中以数组的形式保存的线性表,是指用一组地址连续的存储单元依次存储数据元素的线性结构。即物理相邻,逻辑相邻。顺序表又分为定长顺序表和不定长顺序表,本节要讲的是定长顺序表,定长顺序表,顾名思义,就是顺序表的长度一定,即存放的数据个数是有限的。那它在计算机中的存储结构是怎样的呢?二、存储结构我们可以构造一个定长的数组elem来存放数据,在这里以十个长度为例,然后...原创 2019-03-03 20:14:15 · 2444 阅读 · 0 评论 -
【数据结构】交换排序(二)——快速排序
快速排序—、基本思想:整体思想:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。 首先任意选取一个数据(通常选用数组的第一个数)作为关键数据,然后将所有比它小的数都放到它前面,所有比它大的数都放到它后面,这个过程称为一趟快速排序。快速排序...原创 2018-12-05 18:22:52 · 345 阅读 · 0 评论 -
【数据结构】插入排序(一)——直接插入排序
先把a[i]赋值给变量tmp,然后将tmp依次与a[i-1]、a[i-2]......进行比较,将比tmp大元素右移一个位置,直到发现某个j(0<=j<=i-1),使得a[j]<=tmp或j为-1,把tmp赋值给a[j+1]。把n个待排序的元素看出一个有序表和一个无序表,开始时有序表中只包含一个元素,无序表含有n-1个元素,排序过程中每次从无序表中取出第一个元素,将它插入有序表中的适当位置,使之成为新的有序表,重复n-1次可完成排序过程。,当原数组为顺序时,时间复杂度为O(n).,空间复杂度O(1)。原创 2018-12-03 01:32:24 · 1343 阅读 · 1 评论 -
【数据结构】交换排序(一)——冒泡排序
冒泡排序1、算法思想:比较相邻的元素。如果第一个比第二个大,就交换他们两个。 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。 针对所有的元素重复以上的步骤,除了最后一个。 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。2、冒泡排序过程如下图1: ...原创 2018-12-03 00:58:22 · 446 阅读 · 1 评论 -
【数据结构】线性结构——线性表之顺序存储结构(顺序表)
一、认识线性表线性表是一个线性结构(数据元素之间存在一对一的关系)。它是由n(n>=0)个具有相同类型的数据元素a1,a2,a3.....组成的有限序列,这些数据元素称为结点,记录或表目。线性表中除第一个元素外,其他元素有且仅有一个直接前驱;除最后一个元素外,其他元素有且仅有一个直接后继。线性表的存储结构主要有以下两种:定长的顺序存储结构,简称顺序表。程序通过创建数组,分配...原创 2018-11-28 01:31:43 · 3101 阅读 · 0 评论 -
【数据结构】二叉树的基本形态和存储结构
摘要:本文主要介绍二叉树的基本结构和性质,并实现了二叉树的顺序存储和链式存储。原创 2020-09-06 22:16:27 · 8711 阅读 · 0 评论 -
【数据结构】树的基本认识
文章目录前言一、树的定义及基本术语1.树的定义2.基本术语3.树的性质二、树的表示(存储结构)前言树形结构是一类重要的非线性结构。树形结构是结点之间有分支,并且具有层次关系的结构,类似于大自然中的树。一、树的定义及基本术语1.树的定义树是一种非线性的数据结构,它是由n(n>=0)个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。它具有以下的特点:①每个结点有零个或多个子结点;(每个结点有.原创 2020-09-06 20:46:07 · 1474 阅读 · 0 评论 -
【数据结构】常见排序算法的比较
常见排序算法的比较前言一、各种排序算法比较前言对于各种排序算法的性能我们可以从时间复杂度、空间复杂度、特殊情况和稳定性四个方面来比较。其中特殊情况是指当序列为有序时,对排序算法复杂度的影响。一、各种排序算法比较排序算法时间复杂度空间复杂度序列有序稳定性直接插入排序O(n^2)O(1)O(n)稳定希尔排序O(n^1.3)O(1)/不稳定冒泡排序O(n^2)O(1)O(n)稳定快速排序O(nlog2 n)O(log2 n)O(原创 2020-08-26 21:26:06 · 805 阅读 · 0 评论 -
【数据结构】模式匹配算法
一、模式匹配的概念模式匹配是数据结构中字符串的一种基本运算,给定一个子串,要求在某个字符串中找出该字串相同的所有子串,这就是模式匹配。其中原字符串成为目标串,给定的子串为模式串。通俗理解如下图1-1:二、常用的模式匹配算法1、朴素的模式匹配算法(也称简单匹配算法,Brute-Force简称BF算法)A.算法思想:核心是穷举法。从目标串的的第一个字符起与模式串的第一个字符比较...原创 2019-11-19 17:33:02 · 7156 阅读 · 0 评论 -
【数据结构】栈的应用——四则运算表达式求值(波兰式、逆波兰式)
一、中缀表达式我们平时使用的标准四则运算表达式,例如:“9+(3-1)*3+10/2”叫做中缀表达式。按照四则运算的运算符优先级得到相应语法树表示:可以清楚地知道其实中缀表达式是相应的语法树的中序遍历的结果。二、前缀表达式(波兰式)前缀表达式又叫做波兰式。同样的道理,表达式的前缀表达式是由相应的语法树的前序遍历的结果得到的。例如:“9+(3-1)*3+10/2”的前缀表达式(波兰式)为“+ + 9 * - 3 1 3 / 10 2”。三、后缀表达式 (逆波兰式)后缀表达.原创 2020-09-15 00:20:52 · 1479 阅读 · 0 评论 -
【数据结构】顺序栈和链栈
文章目录一、栈的定义二、栈的顺序存储结构及实现1.顺序栈的定义2.顺序栈的进栈和出栈操作(1)进栈操作(2)出栈操作三、栈的链式存储结构及实现1.链栈的定义2.链栈的进栈和出栈操作(1)进栈操作(2)出栈操作前言栈是一种特殊的线性表,其特殊在于栈的基本操作是线性表操作的一个子集。栈按“后进先出”的规则进行操作,故称其为操作受限的线性表。一、栈的定义栈(stack)是限定仅在表尾进行插入和删除操作的线性表。允许插入和删除一端为线性表的表尾..原创 2020-09-14 22:22:39 · 1025 阅读 · 0 评论 -
【数据结构】循环链表和双向链表
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言 一、pandas是什么? 二、使用步骤 1.引入库 2.读入数据 总结前言对于单链表,由于每个结点只存储了向后的指针,到了为标志就停止了向后链的操作。这样,当我们需要找到某个结点的前驱就没办法了。如何从链表中的任一结点出发,访问到链表的全部结点?循环链表就是解决这个麻烦的重要方法。一、循环链表的定义1、定义将单链表中终端结点的指针端由空指针改为指向头指针,就使整个单链表形..原创 2020-09-14 11:24:42 · 2070 阅读 · 0 评论 -
【数据结构】静态链表的定义和操作
文章目录一、静态链表的定义二、静态链表的插入和删除操作前言单链表实现的一个很大的作用来源于指针,但如果没有指针之前,该如何来描述单链表呢?有人提出用数组来代替指针,来描述单链表。接下来就看看它是如何实现的?一、静态链表的定义用数组来存放元素的值和地址。由于数组元素的个数一旦确定就不会改变,因而称这种链表为静态链表。数组元素由两部分组成:data和cur。数据域data,用来存放数据元素(要处理的数据);游标cur相当于单链表的next指针,存放该元素的后继在数组中的下标。.原创 2020-09-13 19:17:26 · 1188 阅读 · 0 评论 -
【数据结构】线性结构——线性表之链式存储结构(链表)
文章目录前言一、链表概述二、单链表的定义1.定义三、单链表的操作前言为了克服顺序表存储结构的缺点,充分利用存储空间和提高运行效率,线性表可以采用另一种存储结构——链式存储结构。线性表的链式存储结构简称“链表(link list)”一、链表概述链表的数据元素所占的存储单元地址可以是连续的,也可以是不连续的,可根据需要临时、动态地申请分配相应的存储空间,数据元素之间的逻辑关系可以用“链”来表达。链表的插入和删除不需要移动数据元素,只需要修改链即可实现。..原创 2020-09-13 18:09:22 · 5204 阅读 · 0 评论 -
【数据结构】认识算法和算法分析(时间复杂度和空间复杂度)
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言 一、pandas是什么? 二、使用步骤 1.引入库 2.读入数据 总结一、算法1.定义算法是二、使用步骤1.引入库代码如下(示例):import numpy as np import pandas as pd import matplotlib.pyplot as plt import seaborn as sns import warnings warning..原创 2020-09-11 20:40:34 · 495 阅读 · 0 评论 -
【数据结构】数据结构的基本概念——逻辑结构、存储结构、抽象数据类型
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言 一、pandas是什么? 二、使用步骤 1.引入库 2.读入数据 总结前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。一、基本概念和术语?1.数据数据是描述客观事物的符号,是计算机可以操作的对象,是能被计算机识别,并输入到计算机处理的符号集合。(数据不..原创 2020-09-11 18:47:52 · 28793 阅读 · 0 评论 -
【数据结构】图的基本概念和存储结构
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言 一、pandas是什么? 二、使用步骤 1.引入库 2.读入数据 总结前言图(graph)是一种比线性表和树更加复杂的非线性结构,是对结点的前驱和后继个数不加限制的数据结构,用来描述元素之间“多对多”的关系。一、图的基本概念?1.定义:图G由顶点集V和边集E组成,记为G=(V,E) V(G)表示图G中顶点的有限非空集。 用|V|表示图G中顶点的个数,也称为图G的阶..原创 2020-09-10 22:13:51 · 1345 阅读 · 0 评论 -
【数据结构】树、二叉树和森林的相互转换
一、树和二叉树的相互转换①加线:树中所有相邻兄弟加一条线②去线:对于树中的每个结点,只保留与其第一个孩子结点之间的连线,删去与其他孩子结点的连线③旋转:以树的根结点为轴心,将整棵树顺时针旋转一定角度,使之结构层次分明,即可得到二叉树...原创 2020-09-09 22:44:10 · 11881 阅读 · 0 评论 -
【数据结构】哈夫曼树(最优二叉树)和哈夫曼编码
一、专业术语路径在一棵树中,从一个结点到另一个结点所经过的所有结点,被我们称为两个结点之间的路径。示例图中根结点A到叶结点D的路径为A、B、D路径长度在一棵树中,从一个结点到另一个结点所经过的“边”的数量,被我们称为两个结点之间的路径长度。 示例图中根结点A到叶结点D经过了3条边,所AD的路径长度为3权将节点赋予一定的量值,该量值成为权。结点的带权路径长度树的每一个结点,都可以拥有自己的“权重”(Weight),权重在不同的算法当中可以起到不同的作用。...原创 2020-09-08 00:17:33 · 2087 阅读 · 0 评论 -
【数据结构】线索二叉树及结点的前驱和后继查找
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言 一、pandas是什么? 二、使用步骤 1.引入库 2.读入数据 总结前言二叉树的遍历是以一定规则将二叉树中的结点排列成一个线性序列,从而得到二叉树的前序序列、中序序列、后序序列。这实质上是对一个非线性结构进行线性化操作。当以二叉链表作为存储结构时,只存储了结点的左右孩子信息,而没有存储结点在遍历序列中的前驱和后继信息。而要想获得这样的信息有两种方法:①遍历二叉树。在遍历过程中可得到..原创 2020-09-07 22:05:46 · 8778 阅读 · 0 评论 -
【数据结构】二叉树的遍历方式
摘要:本文主要介绍了二叉树的广度优先算法(层次遍历)和深度优先算法(前序、中序、后序遍历)的算法思想和代码实现。原创 2020-09-07 20:49:27 · 501 阅读 · 0 评论 -
【数据结构】串(串的顺序存储和块链存储)
文章目录一、串的定义二、串的存储结构1.串的顺序存储结构2.串的定长顺序存储及运算3.串的块链存储结构前言串(字符串)是一种特殊的线性表,它的数据元素仅有一个字符组成。一般情况下处理的非数值型数据对象经常是字符串数据,例如在事务处理中,顾客的姓名、地址、货物产地等,一般都作为字符串处理。通常以“串的整体”作为处理对象。一、串的定义串的定义:串(string)是由零个或多个任意字符组成的字符序列。通常记为:s="a1,a2,a3,...,an"s是串的名原创 2020-09-15 22:37:46 · 3756 阅读 · 0 评论 -
【数据结构】队列(顺序队列、循环队列、链队列)
文章目录前言一、队列的定义二、队列的顺序存储结构1.顺序队列的定义2.循环队列定义3.循环队列的基本操作三、队列的链式存储结构1.链队列的定义2.链队列的基本操作前言队列也是一种线性表,其特殊性在于队列的基本操作是线性表的子集。队列按“先进先出”的规则进行操作,故称其为操作受限的线性表。一、队列的定义队列(queue)是只允许在一端进行插入操作,在另一端进行删除操作的线性表,简称“队”。队列是一种先进先出(First In First Out)的原创 2020-09-15 15:32:27 · 40019 阅读 · 11 评论