初阶
文章平均质量分 96
C语言实现的初阶数据结构
666xiaoniuzi
gitee:https://gitee.com/xiaoniuzi666,每天都在更新....
展开
-
堆详解|堆排序|Top-K问题
堆(heap)是计算机科学中一类特殊的数据结构的统称,堆通常是一个可以被看做一棵树的数组对象,因此堆常常是通过数组的形式来实现的,不过堆在实现时必须遵守两个原则要么是大根堆(大堆),要么是小根堆(小堆)堆总是一棵完全二叉树堆在实现时的基本功能有 *入堆、出堆、查看堆顶元素及大小、判空* 等,不过堆通常不单独使用,常常是作为一种辅助结构来处理现实中的问题,比如堆排序(后面会讲到)和Top-K问题可以把堆进行理想化处理,就比如下图中的谷堆,就是一个非常标准的堆以上就是本篇文章的所有内容了,我们从什么是堆。原创 2024-10-17 21:10:37 · 1412 阅读 · 0 评论 -
深入学习二叉树(BinaryTree)(纯小白进)
二叉树(Binary tree)是树形结构的一个重要类型。许多实际问题抽象出来的数据结构往往是二叉树形式,即使是一般的树也能简单地转换为二叉树,而且二叉树的存储结构及其算法都较为简单,因此二叉树显得特别重要。简言之,二叉树是数据结构中非常重要的东西,在很多OJ试题和笔试题中,都会出现它的影子;后续我们也会学到各种各样的树,比如二叉搜索树AVL树红黑树B树等都是基于二叉树的高阶树。总之,现在把普通二叉树学好了,对以后的学习是十分有帮助的。二叉树的学习与之前略有不同,我们不讨论普通二叉树。原创 2024-10-17 12:07:35 · 1027 阅读 · 0 评论 -
深入理解队列(Queue)的实现(纯小白进)
前篇我们学习了栈,理解了栈的性质和实现。现在我们进入队列的学习,那么什么是队列?队列有什么样的特性?它的应用场景有哪些?本文会对队列这种数据结构进行进行抽丝剥茧般的讲解,让你彻底学会它。队列是一种常见的数据结构,它按照先进先出(FIFO)的原则进行操作。队列中的元素按照进入的顺序排列,新元素插入到队列的一端,称为队尾,已有元素的删除操作则发生在队列的另一端,称为队头。本篇对队列这种数据结构进行了概念的说明,对队列的实现细致入微,最后普及了队列这种数据结构的泛用性!希望大家搭配和栈的学习一起食用。原创 2024-10-16 22:24:19 · 776 阅读 · 0 评论 -
深入理解栈(Stack)(纯小白进)
基于下面这张图,再类比顺序表,我们可以发现,栈的实现需要三个元素。//栈数组//栈的空间大小int top;//栈顶位置}ST;对数据类型进行重命名,这样以后需要更换其他数据类型使用的时候只需要更改这一个地方就可以了。ps: 定义一个数组动态的开辟空间,top用来记录栈顶元素的位置,capacity来表示栈的总容量大小。栈是一种简单且高效的数据结构,适用于需要“后进先出”操作的场景。通过掌握栈的基本操作和实现方式,我们可以更好地理解和应用这一数据结构,从而提高程序的效率和可靠性。原创 2024-10-11 14:46:05 · 1795 阅读 · 0 评论 -
时间复杂度和空间复杂度
算法中的基本操作的==执行次数==,为算法的时间复杂度。直接上实例来讲解具体的计算方法吧//计算Func1中++count语句总共执行了多少次?i < N;++i)j < N;k < 2 * N;int M = 10;++count;算法执行次数函数表达式:F(N) = N^2 + 2 * N + 10。原创 2024-09-22 17:08:51 · 900 阅读 · 0 评论 -
深入理解双向循环链表(List)
我们可以根据前面的博客得知,链表分为带头和不带头,双向和单向,循环和非循环链表,两两组合之后,共有8种链表结构。其中最常用的是单向不带头非循环链表和双向带头循环链表。前者在之前已经实现过了,大家可以点击前面的链接直达,而今天我们主要介绍的是双向带头循环链表的实现。双向带头循环链表是一种灵活且高效的数据结构,适用于需要频繁插入和删除操作的场景。通过掌握双向带头链表的创建、插入、删除、查找等操作,我们可以更好地理解和应用这一数据结构,从而提高程序的效率和可靠性。原创 2024-10-10 15:54:19 · 942 阅读 · 0 评论 -
深入理解顺序表(SeqList)
顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般情况下采用数组存储。在数组上完成数据的增删查改。可动态增长的数组,要求数据是连续存储的1、静态顺序表:使用定长数组存储元素缺陷:给小了不够用,给大了可能浪费,非常不实用#define N10//定长数组//有效数据个数}SeqList;2、动态顺序表:使用动态开辟的数组存储元素动态顺序表可根据我们的需要分配空间大小size 表示当前顺序表中已存放的数据个数capacity 表示顺序表总共能够存放的数据个数。原创 2024-10-08 21:57:15 · 1269 阅读 · 0 评论 -
深入理解链表(SList)操作
学习链表之前,先让我们来思考一个问题:为什么有了顺序表,还需要有链表这样的数据结构呢?顺序表存在的一些问题:顺序表在中间/头部的插入删除,要挪动很多数据,时间复杂度为O(N),效率太低了。增容需要申请新空间,拷贝数据,释放旧空间。会有不小的消耗。增容一般是一次增长2倍,势必会有一定的空间浪费。例如当前容量为100,满了以后增容到200,我们再继续插入了5个数据,后面没有数据插入了,那么就浪费了95个数据空间SeqList。为了更好的解决上述问题,引入了链表。//定义单链表节点。原创 2024-10-09 10:55:47 · 1321 阅读 · 2 评论