![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
文章平均质量分 93
记录数据结构的学习
lge101058
这个作者很懒,什么都没留下…
展开
-
【数据结构】详解堆的实现
堆分为两种,一种是大堆(大根堆),还有一种是小堆(小根堆)。本篇文章将会通过实现大堆的方式来让大家理解堆方面的知识。小堆可根据大堆稍做修改即可。文章末尾附带源码。// 宏定义数据类型// 堆结构体// 指向数组的指针,数组的元素类型为HPDataType// 数组、堆的有效元素个数int size;// 数组的容量}HP;在一般情况下,堆都是存放的都是 int 类型的数据,所以其实也可以不用 typedef 来宏定义数据类型。原创 2023-12-16 16:42:09 · 42 阅读 · 0 评论 -
【数据结构】手把手分析:链式二叉树的实现
树状结构是数据结构中非常重要的部分,我们在进行对树的学习时,一般都是通过二叉树来学习树状结构。但我们知道,这里的二叉树不是完全二叉树,使用数组存储的话会产生较大的空间浪费,我们通常只把堆使用顺序结构的数组来存储。所以我们在实现二叉树的时候一般都是采用链式结构。文章末尾附带完整源码。// 宏定义数据类型// 二叉树的结构体// 数据域// 指向左孩子的指针域// 指向右孩子的指针域}BTNode;原创 2023-12-26 21:27:00 · 415 阅读 · 1 评论 -
运用堆结构来解决Top-K问题
Top-K问题也算是面试中或者题目中常见的一类问题,本篇文章将会使用堆结构的方法来解决Top-K问题。所谓Top-K问题就是从众多数据中找到前K个最大值或者最小值。这个问题不是简单的排个序就能完成的,因为Top-K问题往往设计到的数据量都非常非常多,具体有多多我也不敢定论,反正就是在非常非常多的数据中找出前K个最值。本篇文章到这里就结束了,我们使用了堆的结构来解决Top-K问题。希望本篇文章对你有所帮助,如果发现错误,请读者不吝赐教。原创 2023-12-25 19:15:50 · 45 阅读 · 1 评论 -
【数据结构】操作受限的线性表,栈的具体实现
栈作为一种重要的线性结构,我们对栈的学习是必不可少的。本篇文章将会详细地介绍栈是如何具体实现的。文章末尾附带源码。// 栈的元素类型// 栈的结构体// 指向数组的指针// 标识栈顶位置,其值为栈顶元素的下标+1int top;// 栈的容量}ST;同样的,我们将数据类型重命名为STDataType,方便以后改变。跟顺序表一样,我们定义一个指向数组的指针,数组内存放着数据,数据类型就是STDataType类型。因为栈只能在栈顶插入删除,所以我们需要一个标识栈顶位置的top。原创 2023-12-08 20:50:37 · 66 阅读 · 0 评论 -
【数据结构】最最基础的链式结构——单链表,还不会你就吃大亏了!
对于初学者来说,单链表相比较于顺序表难度其实还是蛮大的,因为顺序表的实现无非是对数组进行操作,而数组大部分人都应该比较熟悉了。单链表却在本质上与顺序表有较大差异,不过不用担心,本篇文章将会使用非常详细的图文来帮助大家理解单链表是如何实现的。文章结尾附带源码。我们知道,顺序表是指数据在内存中是连续存储的一个线性结构,单链表则是指数据在内存中是无需连续存储的一个线性结构。啊?我没听错吧,不连续存储,那我如何找到呢?原创 2023-11-30 23:52:59 · 97 阅读 · 1 评论 -
【七大排序】堆排序详解
常见的排序算法有七种。本篇文章将会详细介绍堆排序的实现。所谓堆,就是一种特殊的完全二叉树。在堆当中,任何一个结点的值都要比其孩子要大或者小,任意结点都比其孩子大的叫做大堆(或大根堆),任意结点都比其孩子小的叫做小堆(或小根堆)。本篇文章详细介绍了堆排序的实现,作为排序速度最快的那一档,还是非常有必要学习掌握的。原创 2023-12-25 15:30:02 · 147 阅读 · 1 评论 -
【图文超详解】一篇文章就能让你深刻了解顺序表的实现
/ 宏定义数据类型// 顺序表结构体// 指向数组的指针,指针的类型是SLDataType*// 顺序表储存的数据个数int size;// 顺序表所能存放的最多数据个数}SL;顺序表存储的数据类型一定是int型的吗,当然不一定,那难道我们需要根据存储的数据类型来大动干戈地修改代码吗,这太麻烦了,所以我们可以通过typedef关键字来对数据类型进行重定义为SLDataType,之后的需要数据类型地方统一使用SLDataType。原创 2023-11-28 23:30:04 · 62 阅读 · 0 评论 -
【数据结构】操作受限的线性表,队列的具体实现
队列和栈一样,同样是操作受限的线性表,在日常生活中的体现也很多,所以学习队列也是必不可少的。本篇文章将会详细介绍队列的具体实现,去解释每行代码的意思,希望对你有所帮助。话不多说,直接上菜。文章末尾附带源码。// 重定义队列的数据类型// 队列元素的结构体// 队列元素的数据域// 队列元素的指针域}QNode;我们使用typedef重定义队列的数据类型,后文的数据类型都被替换为QDataType,以方便以后改变数据类型时只需要改变此一行代码即可。原创 2023-12-09 19:54:15 · 46 阅读 · 0 评论 -
【数据结构】判断二叉树是否是完全二叉树
我们之前在实现链式二叉树的时候,留下了这个 判断二叉树是否是完全二叉树 函数没有实现,而在这篇文章,我们将会非常详细的给大家分析一下这个函数。如果在文中发现错误,还请不吝赐教。原创 2023-12-28 13:34:32 · 2103 阅读 · 1 评论 -
【七大排序】最基础的排序——冒泡排序
常见的排序算法有七种。本篇文章将会详细介绍冒泡排序的实现。冒泡排序属于非常简单的排序,也是大多数人第一次接触到的排序,虽然排序的效率不高,但是对了解排序思想还是有帮助的。原创 2023-12-28 20:06:19 · 311 阅读 · 1 评论 -
【数据结构】链式二叉树的层序遍历
二叉树除了有前序遍历,中序遍历,后序遍历外,还有一个层序遍历,二叉树的层序遍历相比较于前三个稍微复杂一点,我们将在本篇文章详细分析一下层序遍历是怎么实现的。层序遍历主要就是利用队列结构,通过有序的入队列和出队列来达成层序遍历的效果,虽然相比较于二叉树的前,中,后序遍历来说有点不一样,但是在理解了队列的结构和实现,搭配一下构建二叉树,就能轻松写出层序遍历。博主水品有限,若是发现文章中出现错误,还请大家不吝赐教。原创 2023-12-26 23:00:14 · 64 阅读 · 1 评论