![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
文章平均质量分 78
蓝乐
这个作者很懒,什么都没留下…
展开
-
【C++】AVL树的实现--详细解析旋转细节
我们之前所学习的二叉搜索树由于可能出现单边树的极端情况,导致效率为O(N)。因此,本文将介绍AVL树即平衡搜索二叉树,将可以有效的避免单边树的情况。AVL树的实现AVL树的概念AVL树的定义AVL树结点定义AVL树的概念AVL树是以发现其的两位俄罗斯数学家G.M.Adelson-Velskii和E.M.Landis的首字母命名的。其实现方法为:当向二叉搜索树中插入新结点后,如果能保证每个结点的左右子树高度之差的绝对值不超过1(需要对树中的结点进行调整),即可降低树的高度,从而减少平均搜索长度。.原创 2022-03-10 23:18:53 · 1588 阅读 · 17 评论 -
【C++】栈的应用:逆波兰式的实现
逆波兰表达式一.定义二.逆波兰式的意义三.逆波兰式的实现1.方法(1)中缀表达式转化为后缀表达式(2)由后缀表达式计算结果2.代码实现一.定义逆波兰式,又称后缀表达式,指的是操作符在其所控制的操作数后面的表达式。举个例子,1 + 2 * 3 - 4这个表达式是我们熟悉的中缀表达式,那么其所对应的后缀表达式为:1 2 3 * + 4 -。再来个复杂的例子:1 * (2 + 3) / 5 - 4 / 2其对应的后缀表达式为:1 2 3 + * 5 / 4 2 / -(其中括号由于只是提升表达式优先级的作原创 2021-11-24 23:14:36 · 3590 阅读 · 5 评论 -
【数据结构】排序(三)
排序一.归并排序前面我们已经了解了排序中的插入排序,选择排序已经交换排序。本篇文章将介绍剩下的归并排序和非比较排序中的计数排序,同时介绍各种排序算法的稳定性,并对排序进行一下总结。一.归并排序...原创 2021-09-23 16:25:06 · 366 阅读 · 3 评论 -
【数据结构】排序(二)
排序三.交换排序1.冒泡排序概念及分析算法分析小结2.快速排序概念算法分析与实现1.hoare版本在认识了插入排序和选择排序后,我们再来了解一下剩下的交换排序和归并排序。三.交换排序1.冒泡排序概念及分析冒泡排序,顾名思义,每趟将待排序数组中的最大值冒到序列的最后一个位置,当进行n - 1趟后,序列便成了升序。算法分析冒泡排序总共需要冒n - 1趟,每趟比较n减去已经比较好的数的个数再减1,即n - 1 - i次比较,若相邻两数前者比后者大,则二者交换,因此冒泡排序的代码为:void B原创 2021-09-19 23:36:11 · 123 阅读 · 2 评论 -
【数据结构】排序(一)
排序排序的概念常见的几种排序算法插入排序直接插入排序概念及分析算法实现小结希尔排序概念及分析算法实现小结排序的概念所谓排序,即是将一串数据,按照某个或某些关键字的大小,按照递增或递减的顺序排列的操作。常见的几种排序算法本篇文章将介绍插入排序和选择排序。插入排序插入排序的思想其实在日常生活中就有体现,比如我们平时打扑克牌时,一般会将所发的牌按照顺序插入到已经有序的牌中,这便是插入排序了其基本思想即为将待排序的记录按其关键值的大小插入到一个已经有序的序列当中,直到所有的记录插入完为止,得到一个新原创 2021-09-16 22:18:45 · 296 阅读 · 1 评论 -
【数据结构】队列的实现与简单应用
队列队列的概念及结构队列的实现队列的链式结构队列的基本操作队列的简单应用队列的概念及结构队列:只能在一端插入数据,另一端删除数据的特殊线性表,队列具有先进先出FIFO(First In First Out)的特性。入队:进行插入操作的一端称为队尾。出队:进行删除操作的一端成为队头。队列的实现作为线性结构,队列同样可以用顺序表和链表的结构实现,但是使用链表的结构会更优一些,这是因为队列需要不断的进行头插的操作,如果使用数组的话会大大增加操作的时间复杂度,从而使效率降低。队列的链式结构实现队原创 2021-08-24 18:21:03 · 623 阅读 · 0 评论 -
【数据结构】栈的实现与简单应用
栈栈的概念常见术语栈的实现栈的定义栈的应用括号匹配问题:栈作为线性结构中的一种,与线性表其实并无太大区别,无非就是在线性表的基础上加了一个限制罢了,那么,本篇文章将从栈的实现和一个简单的应用来介绍栈。栈的概念栈是一种特殊的线性表,其只能在固定的一端进行插入和删除操作,这是栈顶,而另一端叫栈底。栈的数据元素遵循LIFO即后进先出(Last In First Out )的规则。常见术语压栈/入栈/进栈:栈的插入操作,只能在栈顶进行。出栈:栈的删除操作,也只能在栈顶进行。栈的实现作为一种特殊的线原创 2021-08-21 21:34:35 · 854 阅读 · 0 评论 -
【数据结构】栈
文章目录一,栈1.基本概念(1)定义:只允许在一端进行插入或删除操作的线性表。(2)重要术语一,栈1.基本概念(1)定义:只允许在一端进行插入或删除操作的线性表。(2)重要术语栈顶:允许插入和删除的一端栈底:不允许插入和删除的一端...原创 2021-05-01 13:22:27 · 161 阅读 · 0 评论 -
【数据结构】线性表
一,线性表1.基本概念a.定义:线性表是具有相同数据类型的n个数据元素的有限序列***,其中n位表长,当n=0是线性表是一个空表。b.几个概念:·ai是线性表中的“第i个”元素线性表中的位序(注意:位序从1开始,数组下标从0开始)。·a1是表头元素*;an是表尾元素。·除第一个元素外,每个元素有且仅有一个前驱;除最后一个元素外,每个元素有且仅有一个后继。2.基本操作InitList(&L):初始化表。构造一个空的线性表L,分配内存空间DestroyList(&L):销毁操原创 2021-04-21 17:53:06 · 518 阅读 · 4 评论 -
【数据结构】算法与时间复杂度,空间复杂度
这次来介绍算法,时间复杂度和空间复杂度。算法是程序设计的核心,那么何为算法,我们以下面这张图来大致感受一下实现算法可以用文字,代码或伪代码,需要注意的是实现一个好算法的前提。算法概念不是特别重要,接下来介绍相对更重要的内容–时间复杂度。我们再以一张图来理解时间复杂度举个例子int main(){ int tmp = 0; int positive = 0; int negative = 0; int n=0; scanf("%d",&n);原创 2021-04-13 12:31:56 · 165 阅读 · 1 评论 -
【数据结构】基本概念
声明:本人大一下,初学数据结构,刚开始学时不够认真,导致现在对与数据结构掌握得不是很熟练,在接下来的日子中将会在学余时间总结一些数据结构的知识,以加强对数据结构的理解,各位大佬也可指出我的不足,以便更全面的理解这门学科。接下来进入正题,即数据结构的基本概念。首先用一张图来大体感受一下数据结构的基本概念。由于数据结构对概念的要求不是特别高,故大致了解一下即可先看看数据,数据对象与数据项的关系(如上图所示),我们需要根据实际需求来确定什么时数据元素,数据项。举个例子,若以人为要研究的数据,那么人的性名原创 2021-04-12 18:46:53 · 3133 阅读 · 6 评论