数据结构
文章平均质量分 94
Clumsy、笨拙
这个作者很懒,什么都没留下…
展开
-
【数据结构初阶】二叉树——堆的应用(堆排序 + TOP-K问题)
上一篇我们讲了二叉树的概念,以及堆的结构和实现。不了解的进行了解。本篇,博主分享的是堆的应用。原创 2022-09-07 18:35:33 · 4208 阅读 · 15 评论 -
【数据结构初阶】初始二叉树 -- (二叉树基础概念+二叉树的顺序结构及实现)
由于堆是用数组来存储的,所以定义的结构与顺序表相似,逻辑上是一个完全二叉树,物理上是一个数组的形式。int size;} HP;原创 2022-09-06 13:17:35 · 2197 阅读 · 21 评论 -
【数据结构初阶】栈和队列(C语言实现+图解)
结构如下//指向为栈开辟的空间 int top;//指向栈顶,相当于顺序表中的size int capacity;//容量 } ST;//结点 typedef struct QueueNode {} QNode;//队列 typedef struct Queue {//记录链表的头 QNode * tail;//记录链表的尾 int size;//记录队列的元素个数 } Queue;队列需要两个指针标识队头和队尾,以便管理队列的元素。而队列元素即结点用单链表的结构实现即可。......原创 2022-08-27 22:30:45 · 1929 阅读 · 10 评论 -
【初阶数据结构】带头双向循环链表(C语言实现)
前篇已经说到,链表的结构可以分为八种:带头单向循环链表、带头单向非循环链表、带头双向循环链表、带头双向非循环链表、无头单向循环链表、无头单向非循环链表、无头双向循环链表、无头双向非循环链表。无头单向非循环链表(单链表)和带头双向循环链表。无头单向非循环链表:结构简单,一般不会单独用来存数据。实际中更多是作为其他数据结构的子结构,如哈希桶、图的邻接表等等。另外这种结构在笔试面试中出现很多。带头双向循环链表:结构最复杂,一般用在单独存储数据。实际中使用的链表数据结构,都是带头双向循环链表。...原创 2022-08-26 21:08:39 · 638 阅读 · 10 评论 -
【初阶数据结构】单链表(C语言实现+动图演示)
首先我们需要对单个结点进行定义就像这个图一样,一个空间存放数据,一个空间存放下一个结点的地址单链表在逻辑上是连续的,但在物理上不一定连续,可以做到按需所取,但不支持随机访问。上述实现单链表是传的二级指针,若不想传二级指针,可以使用以下两种方法:1.使用带头结点的链表,链表没有元素时头指针指向头结点,不需要对头指针修改2. 调用函数时以返回值的形式返回头指针,让头指针在调用时赋值(非常麻烦)原创 2022-08-25 01:41:19 · 2052 阅读 · 13 评论 -
【初阶数据结构】二、C语言实现顺序表
一、线性表线性表(linear list)是n个具有相同特性的数据元素的有限序列。 线性表是一种在实际中广泛使用的数据结构,常见的线性表:顺序表、链表、栈、队列、字符串…线性表在逻辑上是线性结构,也就说是连续的一条直线。但是在物理结构上并不一定是连续的,线性表在物理上存储时,通常以数组和链式结构的形式存储。接下来,我们进入今天的主讲内容:顺序表原创 2021-10-18 01:01:01 · 1184 阅读 · 27 评论 -
【初阶数据结构】一、时间复杂度与空间复杂度
文章目录一、算法效率二、时间复杂度2.1 时间复杂度的概念2.2 大O渐进表示法2.3 时间复杂度计算举例实例1:实例2:实例3:实例4:实例5:实例6:实例7:实例8:三、空间复杂度3.1 空间复杂度的概念3.2 空间复杂度计算举例实例1:实例2:实例3:实例4:四、常见复杂度对比一、算法效率当我们解题时,可能会有多种算法可行,那究竟选择哪一种算法呢?哪一种算法更好呢?其实,衡量一个算法的好坏,我们看的是这个算法的执行效率。算法在编写成可执行程序后,运行时需要耗费时间和空间(内存) 。因此算法的效原创 2021-10-14 17:20:08 · 321 阅读 · 8 评论