数据结构
文章平均质量分 96
爱生活,爱代码
天行健,君子以自强不息
展开
-
万字总结画解八大排序算法
目录插入排序希尔排序插入排序1、从图中观察的现象是如果后一个数不比前一个数小,那就不需要插入,不插入的动作就是break出循环2、如果前面的数都比pos值大,那么就将前n个数都往后挪动,直到比pos值小或者相等就停止,可以用循环控制,这里防止越界需要再加判断插入排序的基本思想:其基本思想是:把待排序的记录按其关键码值的大小逐个插入到一个已经排好序的有序序列中,直到所有的记录插入完为止,得到一个新的有序序列 。//插入排序,升序void InsertSort(int* arr, in.原创 2021-10-23 14:18:01 · 1084 阅读 · 39 评论 -
二叉树C语言实现递归的进一步提升确定不来肝一篇?
目录前言构建一颗二叉树二叉树的遍历求一颗二叉树的结点个数前言由于二叉树是数据结构中偏难的一块,这里我们先熟悉二叉树的结构,再具体来实现一颗二叉树,采用手动构建二叉树的方式,帮助大家进一步理解构建一颗二叉树呈现的是一个树型结构BTNode *BinaryTreeCreate(char ch) { BTNode *newNode = (BTNode *)malloc(sizeof(BTNode)); newNode->data = ch; newNode->left = N.原创 2021-10-21 14:02:48 · 666 阅读 · 10 评论 -
堆实现TopK问题以及二叉树的基础知识铺垫
目录前言树概念及结构树的表示左孩子右兄弟表示法2.二叉树概念及结构2.4特殊的二叉树:二叉树的性质练习题前言一个(最大)二叉堆是一个具有最大堆特性的完全二叉树。所以在学习堆之前,我们先来学习一下二叉堆吧树概念及结构1.1树的概念树是一种非线性的数据结构,它是由n(n>=0)个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。有一个特殊的结点,称为根结点,根节点没有前驱结点除根节点外,其余结点被分成M(M>0)个互不.原创 2021-10-19 10:11:58 · 521 阅读 · 7 评论 -
栈和队列C语言实现附加力扣题
目录栈的概念栈的实现栈的声明栈的实现压栈出栈队列队列声明队列实现销毁队尾入队队头出队判空获取队头数据获取队尾数据求元素个数力扣题20. 有效的括号225. 用队列实现栈栈的概念1.栈1.1栈的概念及结构栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出LIFO(Last In First Out)的原则。压栈:栈的插入操作叫做进栈/压栈/入栈,入数据在栈顶。出栈:栈的删除操作叫做出栈。出数据也在.原创 2021-10-18 08:38:37 · 652 阅读 · 32 评论 -
双向循环链表增删查改C语言实现
目录双向链表的结构双向链表的实现双向链表的声明双向链表的实现结点的创建头结点的创建链表的销毁链表的打印链表的尾插链表的尾删链表的头插链表的头删查找指定位置前插入指定位置删除双向链表的结构双向链表:每个结点存在两个指针域,分别存储该结点的前驱结点引用和后继结点引用,从任意一个结点出发,都能通过前驱引用以及后继引用完成整个链表结点的访问。所以不难看出,单向链表能干的事,双向链表也能干!但是正是因为这一特性,相比于单链表,双向链表在访问其他结点上带来方便的同时,将占用更多的资源,因此在使用的时候可.原创 2021-10-11 16:05:33 · 1270 阅读 · 10 评论 -
时间复杂度计算及空间复杂度计算
目录1.算法效率2.时间复杂度3.空间复杂度4.大O渐进表示法5.常见时间复杂度1.算法效率算法效率分析分为两种:第一种是时间效率,第二种是空间效率。时间效率被称为时间复杂度,而空间效率被称作空间复杂度。 时间复杂度主要衡量的是一个算法的运行速度,而空间复杂度主要衡量一个算法所需要的额外空间,在计算机发展的早期,计算机的存储容量很小。所以对空间复杂度很是在乎。但是经过计算机行业的迅速发展,计算机的存储容量已经达到了很高的程度。所以我们如今已经不需要再特别关注一个算法的空间复杂度。2.时间复杂度2..原创 2021-10-11 16:04:06 · 5814 阅读 · 16 评论 -
单链表C语言实现附加力扣题
目录链表的实现链表的打印链表的实现链表的打印时间复杂度O(N)//打印void SLTprint(SLTNode *ps) { assert(ps); SLTNode *cur = ps; while (cur != NULL) { printf("%d ",cur->data); cur = cur->next; } printf("\n");}...原创 2021-10-09 09:55:09 · 513 阅读 · 16 评论 -
顺序表C语言实现附加力扣题
目录1.线性表2.顺序表顺序表缺陷:顺序表的实现顺序表的初始化顺序表的销毁1.线性表线性表(linear list)是n个具有相同特性的数据元素的有限序列。 线性表是一种在实际中广泛使用的数据结构,常见的线性表:顺序表、链表、栈、队列、字符串…线性表在逻辑上是线性结构,也就说是连续的一条直线。但是在物理结构上并不一定是连续的,线性表在物理上存储时,通常以数组和链式结构的形式存储。2.顺序表2.1概念及结构顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般情况下采用数组存储。原创 2021-10-07 09:43:00 · 754 阅读 · 23 评论