数据结构
文章平均质量分 94
芒果再努力
逐梦需要勇气和毅力
展开
-
【数据结构】八大排序算法-代码实现+复杂度分析+稳定性分析+总结
注意:1.对于快速排序:如果加了三数取中 + 三路归并 最坏就不是O(N^2)2.为了绝对的速度选快排,为了省空间选堆排,为了稳定性选归并3.时间复杂度:O(N*logN),额外空间复杂度低于O(N),且稳定的基于比较的排序是不存在的。原创 2023-09-27 20:53:10 · 995 阅读 · 1 评论 -
【数据结构】二叉树进阶题目练习
给你二叉树的根节点 root ,请你采用前序遍历的方式,将二叉树转化为一个由括号和整数组成的字符串,返回构造出的字符串,空节点使用一对空括号对 “()” 表示,转化后需要省略所有不影响字符串与原始二叉树之间的一对一映射关系的空括号对,4.如果走到这一步,说明在当前节点的这颗子树不可能找到x节点,(说明该节点不是从根节点到x节点的路径中的一个节点) 把这个节点从就容器中去掉,然后返回true。当我们把当前节点的所有左路节点都进栈之后,弹出当前栈顶节点,去当前栈顶节点的右子树以相同的子问题方式进行处理。原创 2023-05-17 10:10:50 · 489 阅读 · 0 评论 -
堆&&堆排序&&加强堆&&和堆有关的题一网打尽
2)完全二叉树中如果每颗子树的最大值都在顶部就是大根堆3)完全二叉树中如果每颗子树的最小值都在顶部就是小根堆4)堆结构的向上调整和向下调整算法向上调整向下调整5)堆结构某个元素的增大和减少6)优先级队列结构就是堆结构空树是完全二叉树,完全二叉树的性质:如果父亲下标为i : 左孩子:2*i+1 右孩子: 2*i+2如果孩子下标为i: 父亲的下标:(i-1)/2。原创 2022-12-21 12:31:01 · 5449 阅读 · 1 评论 -
【高阶数据结构】LRU Cache
LRU Cache的介绍+OJ题目实现原创 2022-09-07 09:24:22 · 6407 阅读 · 55 评论 -
【高阶数据结构】并查集的实现(含压缩路径)及其应用-C++版本
并查集的实现+压缩路径+练习题原创 2022-09-03 20:16:44 · 1065 阅读 · 27 评论 -
【二叉树】大学有棵树叫高数,数据结构也有棵二叉树-代码详解
二叉树实现代码详解原创 2022-06-07 21:46:09 · 2011 阅读 · 60 评论 -
【数据结构】-堆的概念及实现
堆-是一种重要的数据结构!2万字带你深入了解堆的原理原创 2021-11-29 10:23:18 · 843 阅读 · 52 评论 -
数据结构之二叉树(概念)
传送门点击跳转特殊的树-二叉树2.1概念:满二叉树和完全二叉树满二叉树完全二叉树二叉树的性质习题练习二叉树的存储结构1.顺序存储经典结论:2.链式存储特殊的树-二叉树2.1概念:一棵二叉树是结点的一个有限集合,该集合:1.或者为空2.由一个根节点加上两棵别称为左子树和右子树的二叉树组成注意:二叉树的度不一定为2如:空树:度为0只有一个结点:度为0有两个结点:度为1满二叉树和完全二叉树满二叉树满二叉树:一个二叉树,如果每一个层的结点数都达到最大值,则这个二叉树就是满二原创 2021-11-23 11:58:10 · 1798 阅读 · 41 评论 -
数据结构-树及其概念
树树是一种非线性的数据结构,它是由n(n>=0)个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的根节点没有前驱结点除根节点外,其余结点被分成M(M>0)个互不相交的集合T1、T2、……、Tm,其中每一个集合Ti(1<= i<= m)又是一棵结构与树类似的子树。每棵子树的根结点有且只有一个前驱,可以有0个或多个后继树是递归定义的。问:子树是否可以有交集注意:树形结构中,子树之间不能有交集,否则就不是树原创 2021-11-19 15:20:10 · 974 阅读 · 24 评论 -
数据结构之时间复杂度、空间复杂度
时间复杂度时间复杂度概念????时间复杂度的定义:在计算机科学中,算法的时间复杂度是一个函数,它定量描述了该算法的运行时间。一个算法执行所耗费的时间,从理论上说,是不能算出来的,只有你把你的程序放在机器上跑起来,才能知道。但是我们需要每个算法都上机测试吗?是可以都上机测试,但是这很麻烦,所以才有了时间复杂度这个分析方式。一个算法所花费的时间与其中语句的执行次数成正比例,算法中的基本操作的执行次数,为算法的时间复杂度即:找到某条基本语句与问题规模N之间的数学表达式,就是算出了该算法的时间复杂度。v原创 2021-10-19 07:21:40 · 477 阅读 · 13 评论 -
数据结构之队列
一.什么是队列二.项目创建三.队列代码实现1.队列结构体的创建2.初始化头尾指针3.队尾入数据4.队头出数据5.求队列长度6.返回队头数据7.返回队尾数据8.判断队列是否为空9.队列销毁四.总结五.原码链接...原创 2021-08-28 20:16:07 · 2259 阅读 · 59 评论 -
数据结构之栈
一.什么是栈二.几道小题开胃三.栈的代码实现1.创建项目2.创建栈结构3.栈的初始化4.入栈操作5.出栈操作6.返回栈顶元素7.求栈元素个数8.判断栈是否为空9.栈的销毁四.总结:五.原码链接...原创 2021-08-24 20:48:47 · 9828 阅读 · 49 评论 -
数据结构之双链表
通过上几篇文章,我们已经了解了什么是顺序表和单链表,具体可以点进去我的主页看!包括静态顺序表和动态顺序表,单链表。下面我们来实现一种新的链表---带头双向循环链表!目录一.什么是带头双向链表二.为什么要使用双向链表三.双向链表的特点四:创建项目五:接口实现1.创建结构体类型2. 带头节点开辟空间3.打印数据4.创建节点5.尾插数据6.头插数据7.尾删数据8.头删数据9.查找数据所在位置10.在pos位置之前插入数据11.删除pos位置节点原创 2021-08-20 21:28:13 · 2404 阅读 · 39 评论 -
数据结构之单链表
前言: 之前的文章,我们了解了顺序表,包括静态顺序表和动态顺序表。具体可以看我的上两篇文章1.静态顺序表知识及代码实现:静态顺序表2.动态顺序表知识及代码实现:动态顺序表 既然顺序表已经能存储数据,那么我们什么又要引入链表呢? 首先,我们要知道顺序表的优缺点: 优点:空间连续,支持随机访问 缺点: 1.中间或前面部分的插入删除的时间复杂度为O(N) 2.增容的代价比较大为了解决上述问题,我们引入了链表的概念。目录一:什么是链表二:链表的种类三:...原创 2021-08-15 10:34:00 · 1726 阅读 · 16 评论 -
数据结构之动态顺序表(含游戏菜单)
上一篇文章我们谈了数据结构的顺序表,以及实现了静态顺序表,具体可以看我的上一篇文章->>>数据结构之静态顺序表. 我们可以知道,静态顺序表的缺点是: 因为使用的是定长数组,所以空间给少了不够用,给多了,就会造成空间的浪费. 由此,我们引入一个新的顺序表----动态顺序表.一.什么是动态顺序表? 二.动态顺序表的优缺点 三.接口实现 1.定...原创 2021-08-13 17:24:14 · 2055 阅读 · 20 评论 -
数据结构之静态顺序表(含游戏菜单)
目录一.什么是顺序表?二.静态顺序表和动态顺序表的不同点三.什么是静态顺序表四、函数接口实现1.初始化结构体2.打印数据3.头插数据4.尾插数据5.头删数据6.尾删数据附:原码一.什么是顺序表? 顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般情况下采用数组存储。在数组上完成数据的增删查改。其中顺序表又分为:静态顺序表和动态顺序表。 简单来说:顺序表:连续的物理空间存储---是数组 ,数据必须是从头开始,依次存储。二...原创 2021-08-11 12:47:25 · 2324 阅读 · 14 评论