![](https://img-blog.csdnimg.cn/b3d5a579ab71470fa7f241e087ee8961.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
数据结构理解与实现
文章平均质量分 92
从零开始学数据结构,持续更新中....
悲伤的猪大肠9
星光不问赶路人,岁月不负有心人
展开
-
【数据结构】轻松掌握二叉树的基本操作及查找技巧
在学习二叉树的基本操作前,需先要创建一棵二叉树,然后才能学习其相关的基本操作。由于现在大家对二 叉树结构掌握还不够深入,为了降低学习成本,此处手动快速创建一棵简单的二叉树,快速进入二叉树操作学习,等二叉树结构了解的差不多时,再来研究二叉树真正的创建方式,下面用左右孩子法来定义二叉树结构体。原创 2023-05-28 17:55:38 · 535 阅读 · 1 评论 -
【数据结构】如何应用堆解决海量数据的问题
堆(Heap数据结构堆在计算机科学中有着广泛的应用,今天来介绍两种堆的应用:堆排序、Top-k问题🍉。原创 2023-05-27 18:29:55 · 990 阅读 · 9 评论 -
【数据结构】什么是堆,如何使用无序数组生成一个堆?
(1)堆的概念及介绍,(2)如何使用无序数组生成一个堆(3)堆的基本功能实现(源代码分享)原创 2023-05-27 16:57:40 · 2120 阅读 · 17 评论 -
【数据结构】特殊的二叉树及其两种存储结构
了解到树结构之后,介绍一下二叉树,首先我们来做个游戏,我在纸上巳经写好了一个l00以内的正整数数字,请大家想办法猜出我写的是哪一个?注意你们猜数字不能超过7次,我的回答只会告诉你你给的答案 是“大了”还是“小了”。这个游戏在—些电视节目中,猜测-些商品的定价时常会使用。我看到过有些人是一点一带你地数字累加的,比如5、l0、l5、20这样猜,这样的猜数策略太低级了,显然是没有学过数据结构和算法的人才做得出的事。 这是一种很经典的折半查找算法,如果我们用折半的办法就一定可以在七次之内猜出结果。原创 2023-05-27 14:27:02 · 1123 阅读 · 2 评论 -
数据结构中“树”的全面讲解
树结构是一种一对多的非线性结构,它是由n(n>=0)个有限结点组成一个具有层次关系的集合。把它叫做树是因 为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。不要与现实中的树混在一起,当n>0时,树有且只有一个根结点。除根节点外,其余结点被分成M(M>0)个互不相交的集合T1、T2、……、Tm,其中每一个集合Ti(1原创 2023-05-26 21:38:20 · 1581 阅读 · 13 评论 -
一看就懂之与栈结构(FILO)相对的——队列结构(FLFO)
队列允许在一端进行插入操作,在另一端进行删除操作的线性表,队列是与栈相对的一个数据结构,栈的特点是先进后出,而队列的特点是先进先出,进行插入操作的一端叫队尾,进行删除的一端叫队头。正如队列的名字一样,我们假设有一个队列(正在排队的一列队伍),一群人,人们依次进入队列进行排队。插入模拟图 显然先排队的必然先出来,依次取出,和放入的顺序一样,这就是队列(FIFO)。删除模拟图 从程序化的角度来讲,应该有两个标记,一个标记着队头,一个标记着队尾,队头用来删除数据,队尾则用来插入数据。 使用链表。原创 2023-05-19 18:26:44 · 1687 阅读 · 13 评论 -
什么是栈,为什么函数式编程语言都离不开栈?
栈是一种具有特殊访问方式的存储空间,它的特殊性在于,最后进入这个空间的数据,最先出去,可以画图来描述一下这种操作方式。假设有一个盒子和三本书,依次将三本书他们放入盒子中。入栈模拟图 现在有一个问题,如果一次只能取一本,我们如何将书从盒子中取出来? 显然必须从盒子的最上边开始取,依次取出,和放入的顺序刚好相反。出栈模拟图 从程序化的角度来讲,应该有一个标记,这个标记一直指示着盒子最上边的书。入栈和出栈。原创 2023-05-18 11:37:29 · 1684 阅读 · 42 评论 -
【数据结构】线性表——带头双向循环链表
带头双向循环链表的优点1.支持任意位置时间复杂度为O(1)的插入和删除。2.按照需求申请释放空间,无需担心空间不够用,无需担心浪费。3.带头可以省去链表为空时的判断,可以使代码更加简约带头双向循环链表的缺点1.不可以进行下标随机访问。2.缓存利用率低带头双向循环链表是线性表的一种,带头双向循环链表是链式存储的线性表,不同于顺序表,链表在内存空间中不连续。带头:带头就是带哨兵位,可以省链表为空时进行的判断。双向:由结构体内的next指针下一条数据进行链接,由prev对前一条数据原创 2023-05-10 17:26:33 · 1004 阅读 · 31 评论 -
【数据结构】线性表之单链表(讲解实现——带动图理解)
单链表的优点1.头部和中间插入或删除数据效率高,无需挪动。2.按照需求申请释放空间,无需担心空间不够用。单链表的缺点1.不可以进行下标随机访问。2.复杂度是O(n)3.反向遍历困难单链表是线性表的一种,单链表是链式存储的线性表,不同于单链表,链表在内存空间中不连续,而是由结构体内的next指针下一条数据进行链接🧐原创 2023-05-01 23:30:05 · 663 阅读 · 15 评论 -
【数据结构】线性表之——“顺序表”
为什么有顺序表?由于数组定义之后不能扩充,我们需要一种更方便的结构来装载数据,顺序表诞生了。顺序表是线性表的一种,线性表的存储都是形成一条线的,顺序表不仅仅在逻辑上是用一条线链接,在内存中也是连续的一块空间,因此可以进行下标随机访问。顺序表不同于数组,顺序表在空间不够的情况下可以选择进行扩充。顺序表不同于数组,顺序表开辟在堆空间中,不用担心栈空间不够用。相对麻烦的就是,先对顺序表进行操作必须要自己实现增删改查等函数。如果学会了顺序表可以试着自主完成通讯录小程序⭐。原创 2023-04-19 19:52:33 · 529 阅读 · 9 评论