![](https://img-blog.csdnimg.cn/874a3154feef4ee185f46bc89fc72e3e.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
数据结构
文章平均质量分 90
宁愿跑起来被拌倒无数次,也不愿规规矩矩走一辈子。 就算跌倒也要豪迈的笑。
დ旧言~
这个作者很懒,什么都没留下…
展开
-
二叉树的实现
谈起二叉树,就不得不谈起树,此时坐在小板凳上的小伙伴们,纷纷举手说,这个我懂。开心的不得了,博主表示你们认知的树,小盆友都懂,😅😅。我们谈的是数据结构的树。在数据结构中,树是一种非线性的数据结构,它是由n(n>=0)个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。就像右图,A点就头,其它就像根,长的真丑,😉😉,当然啦,直接给个树给你,都不知道有啥用,咱就介绍一下数据结构中的树相关知识,话不多说。⭐//包含头文件//定义数据类型。原创 2023-09-23 22:25:15 · 286 阅读 · 46 评论 -
手撕各种排序
谈起排序这个事情,大家都是耳熟能详的事了,从我们认识的斗地主,每一复牌都是按照从小到大的顺序排序的,如图:排序的目的是为了让我们很好的管理,使无序的事情变成有序,当然排序的方法有很多,如由大到小,由大到小.....。而面对大量数据就需要排序。在数据结构中我们发明了多种排序,如我们最早认识的冒泡排序,本篇博客让大家对多种排序有一个很好的认知,闲话少谈。⭐。原创 2023-10-10 16:26:10 · 1409 阅读 · 60 评论 -
手撕单链表
前面我们已经学习了顺序表,顺序表可以存储动态的数据,但是一旦元素过少,而又要开辟空间,这样就造成空间的浪费,为了解决这类问题,人们发现了单链表,把一个一个元素以链子的形式存储,那单链表如何实现呢,今天咱们就实现一下--《单链表》。//包含头文件int n;printf("请输入链表的长度:");printf("\n请依次输入每个节点的值:");i < n;//头插//指向头//打印数据//这里头插本质相似//打印数据//初始化。原创 2023-09-16 16:02:19 · 537 阅读 · 39 评论 -
深度解剖数据在栈中的应用
前面我们已经学习了顺序表和链表,他们无法控制数据的打印,而栈一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出LIFO(Last In First Out)的原则。今天我们来实现一下--《栈》。//包含文件//初始化ST st;while (!STPop(&st);原创 2023-09-17 22:13:39 · 326 阅读 · 38 评论 -
深度解剖数据在队列的应用
前面我们已经学习了顺序表和链表,他们无法控制数据的打印,而队列只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有先进先出入队列:进行插入操作的一端称为队尾 出队列:进行删除操作的一端称为队头,今天我们来实现一下--《队列》。//包含头文件//定义元素类型//定义节点}QNode;//实现队列//头//尾int size;}Que;//初始化//销毁//添加元素//删除元素//找头//找尾//判断//计算队列元素个数。原创 2023-09-19 08:39:59 · 368 阅读 · 55 评论 -
手撕双链表
前面我们已经学习了顺序表和单链表,顺序表可以存储动态的数据,但是一旦元素过少,而又要开辟空间,这样就造成空间的浪费,而单链表以节点为单位存储,不支持随机访问,只能从头到尾遍历访问,为了解决上面两个问题,人们发现了双链表,把一个一个元素以链子的形式存储,可以存储相互的地址,那双链表如何实现呢,今天咱们就实现一下--《双链表》。//包含文件//{////}////{//////}原创 2023-09-16 22:15:17 · 1391 阅读 · 50 评论 -
深度解剖动态内存管理
我们最初的认识的C语言代码都是静态的,无法实现动态管理。说到这里我们想想,动态内存管理有何意义,不难猜出,当我们需要申请一块空间时,多了我们换回去,少了我们再次申请空间,达到一个动态内存管理,想到这些动作,该如何实现捏,学完本章知识,相信对动态内存管理能了如指掌。malloc申请到空间后直接返回这块空间的起始位置地址,不会初始化空间的内容。这里我们看看malloc函数的参数和返回值。如果开辟成功,则返回一个指向开辟好空间的指针。如果开辟失败,则返回一个NULL指针,因此malloc。原创 2023-08-02 21:30:49 · 260 阅读 · 25 评论 -
数据结构的复杂度
我们国家是一个按劳分配的国家,多劳多得,少劳少得,不劳不得。这我我们不难看出,一个人的付出和收获是成正比的。而我们写代码也是如此,如果我们写代码复杂程度比较大,那这段代码占用内存也大。那代码的复杂度咋计算捏,咱们先抛出问题,相信学完本章节对于这个问题可以迎刃而解,话不多说,大家跟上我的脚步,一起学习——《数据结构的复杂度》。原创 2023-07-26 08:35:00 · 1053 阅读 · 39 评论 -
手撕顺序表
梦回数组,当我们开辟了一个数组,数组的大小就已经确定了,不能括容,也不能减容,为了解决这个问题,在数据结构有一个这样的知识--《顺序表》。顺序表连续开辟一个空间,能括容,也能减容,今天我们手撕顺序表。//主函数(包含头文件)//尾删//定义结构体SL sl;//初始化//添加元素//打印元素//尾删//打印元素//尾删//打印元素//添加元素//打印元素//释放内存//头删//定义结构体SL sl;//初始动态列表。原创 2023-07-28 10:38:02 · 559 阅读 · 40 评论