![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构初阶
文章平均质量分 71
铭--
夜色难免黑凉,前行必有曙光
展开
-
【数据结构】二叉树
跟的子节点为第二层,以此类推树的高度或深度:树中节点的最大层次;上面这棵树的高度是4堂兄弟节点:双亲在同一层的节点互为堂兄弟;J、K是堂兄弟节点节点的祖先:从根到该节点所经分支上的所有节点;A是E的祖先子孙:以某节点为根的自述中任一节点都称为该节点的子孙;I、J、P、Q都是E的子孙。原创 2023-08-19 15:22:30 · 5026 阅读 · 3 评论 -
【数据结构】双向链表
带头双向循环链表:结构最复杂,一般用在单独存储数据,实际中使用的链表数据结构,都是带头双向循环链表。另外这个结构虽然复杂,但是使用代码实现以后会发现这个结构会带来很多优势,实现反而简单。无头单向非循环链表:结构简单,一般不会单独用来存储数据,实际中更多是作为其他数据结构的子结构。双向链表的实现看起来复杂,实际上比单链表更加好用。原创 2023-07-18 12:00:00 · 94 阅读 · 0 评论 -
【数据结构】栈和队列
栈:一种特殊的线性表,只允许再固定的一端进行插入和删除操作,进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的数据遵循先进后出的原则压栈:栈插入操作叫做进栈/压栈/入栈。入数据在栈顶出栈:栈的删除操作叫做出栈。出数据也在栈顶。原创 2023-07-17 16:51:40 · 508 阅读 · 0 评论 -
【数据结构】单链表
为什么要学习链表?前面我们所学习的顺序表是存在缺陷的顺序表的缺陷:1.空间不够用就需要扩容,扩容可能会是异地扩容,并且扩容是会发生代价的,可能会造成空间的浪费2.头部或者中间部分的删除,需要大量的移动数据,效率低下优化方案:1.按需申请空间2.尽可能少的移动数据,或者是不移动数据。原创 2023-04-27 20:51:34 · 446 阅读 · 1 评论 -
【数据结构】栈
一般可以使用数组或者链表来实现,但是相对而言数组的结构更加方便一些,数组在进行尾插数据时更加方便,栈的特点时先进后出,一般来说不会在头删、头插、中间的插入和删除,多数情况都在栈顶进行数据的插入(尾插),所以。如果想要在主函数中打印出栈中元素个数,我们就需要关心top初始化为哪种情况,而单独分装一个函数,直接在主函数中调用即可。这里的StackSize接口函数中只有两行代码,为什么需要单独分装一个函数,为什么不在主函数中计算元素的个数?栈:一种特殊的线性表,只允许在固定的一端进行插入和删除的操作,原创 2023-01-25 13:28:55 · 788 阅读 · 0 评论 -
【数据结构】顺序表
【本篇内容】线性表顺序表线性表是n个具有相同特性的数据元素的有限序列。常见的线性表:顺序表、链表、栈、队列、字符串......线性表在逻辑上是线性结构,但是在物理结构上并一定是连续的,线性表在物理上存储时,通常是以数组和链式结构的形式存储的。原创 2023-01-05 15:17:19 · 232 阅读 · 1 评论 -
【数据结构】算法时间复杂度和空间复杂度
衡量一个算法的好坏一般是从时间和空间上来衡量的,即时间复杂度和空间复杂度,时间复杂度是衡量一个算法的运行快慢,而空间复杂度主要是衡量一个算法所需要的额外的空间,当前计算机的存储容量已经达到了很高的程度,所以我们一般不再关注一个算法的空间复杂度,算法的时间复杂度是一个函数(数学中的函数)定量的描述算法的运行时间,一个算法所耗费的时间与其中语句执行的次数成正比例,第一个for循环执行N次,第二个for循环执行M次,计算出的时间复杂度应该是N+M,算法中的基本操作的执行次数为算法的时间复杂度。原创 2022-11-25 12:00:00 · 171 阅读 · 0 评论