![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C语言数据结构
文章平均质量分 90
烟雨长虹,孤鹜齐飞
吃软不吃硬,嵌入式软件工程师
展开
-
【旋而又旋,旋妙之门】AVL 树的性质
我们插在 6 的左边,那么 6 的平衡因子减一,同理 7 的左子树高度加一,那么 7 的平衡因子减一,再继续向上 5 的右子树的最高高度并没有发生改变,所以 5 的平衡因子不发生改变。如果我们想要在 9 后面插入一个节点,那么 8 的平衡因子就会变为 2,此时的AVL树不平衡,根据平衡因子的绝对值必须小于等于二的原则,我们需要对树进行旋转。说明 parent 的平衡因子更新前是 1 / -1,插入节点插入在高的那边进一步加剧了 parent 所在的子树的不平衡,已经违反违规了,需要旋转处理。原创 2024-07-23 15:00:22 · 412 阅读 · 0 评论 -
基于搜索二叉树的停车收费管理系统
基于搜索二叉树的停车收费管理系统原创 2024-07-16 21:37:57 · 347 阅读 · 1 评论 -
数据结构-分析期末选择题考点(广义表)
广义表,又称列表,也是一种线性存储结构,既可以存储不可再分的元素,也可以存储广义表,记作:LS = (a1、a2、…、an),其中,LS 代表广义表的名称,an 表示广义表存储的数据,广义表中每个 ai 既可以代表单个元素,也可以代表另一个广义表。广义表表尾总是广义表,表头可能是也可能不是,例如广义表(a,b,c)表头为a不是,而广义表((a),b,c)表头为(a)是一个广义表。C = (a、(b、c、d)): 广义表 C 中有两个元素,原子 a 和子表 (b,c,d)原创 2024-06-30 11:29:31 · 836 阅读 · 0 评论 -
数据结构-分析期末选择题考点(图)
在图论中,由一个有向无环图的顶点组成的序列,当且仅当满足下列条件时,称为该图的一个拓扑排序(1)每个顶点出现且只出现一次(2)若A在序列中排在B的前面,则在图中不存在从B到A的路径此拓扑排序的思想是:(1)从有向图中选取一个没有前驱的顶点,并输出之(2)从有向图中删去此顶点以及所有以它为尾的弧以上便是。原创 2024-06-29 18:24:34 · 941 阅读 · 0 评论 -
数据结构-分析期末选择题考点(串、数组)
承接上回,我们来复习串这一章的内容 ~说到,其实也不难,不过考点分布算是有点多。这里我们依旧是以题型进行分析:算法:一般考在哪个位置与匹配 (大概率)算法:给出一个串求其t 数组 (大概率) 串的以及(比如说特殊线性表,存储的数据元素是字符)给出一个求数量串的大概考点便是以上这些,我们再来聊一聊考数组的话,肯定是不会给你一维数组的,要考也是考二维,常以计算一个二维数组中的某个空间地址出题计算二维数组中的某个空间。原创 2024-06-28 21:41:44 · 783 阅读 · 0 评论 -
数据结构-分析期末选择题考点(排序)
再找比基准大的元素,找到后交换。(2)归并排序是一种二分排序算法,每次都需要给 n 个元素排序,排序的过程需要 logn,即树的高度,所以时间复杂度为 nlogn。快速排序以基准值为中心,对元素进行划分,这里 28 为基准值,则小于 28 的和大于 28 的进行交换,完成一次划分。排序的思想是每次选出最值,放在已排序序列的末尾,如果最值有多个,而选出的为最后一个最值,会导致相对位置发生变化。这种题就考的是对所有排序的模拟了,需要你了解所有排序的实现原理,属于偏难的题目,小概率会出。题型大概就是初始化建堆。原创 2024-06-26 18:08:54 · 856 阅读 · 2 评论 -
C语言数据结构-分析期末选择题考点(一)
p 已经没有 q 的联系方式了,但是题目还想让我们用原来的联系方式找到 q ,p 的现任是 s 啊,p 的 next 存的是 s 的联系方式,所以 B 也不能选(不知道我这么说,老铁们听不听得懂,应该很好理解吧)简单复习一下应该没什么问题,其次便是结构了,我们的队列也有顺序队列、链式队列,链式队列没什么考点,而顺序队列还可以考进入。A选项为头插,不需要遍历链表,B选项为尾插,也不需要遍历链表,C选项为头删,不需要遍历链表,只有D选项,为尾删,需要遍历单链表,找到尾节点的前一个节点。原创 2024-06-25 11:25:23 · 1381 阅读 · 0 评论 -
C语言数据结构 - 选择题集合(二叉树)
一生负气成今日四海无人对夕阳。原创 2024-05-12 11:51:20 · 951 阅读 · 1 评论 -
【C++程序员的自我修炼】基础语法篇(二)
的方式来解决这个问题,比如说两数相加函数。原创 2024-04-01 13:19:23 · 699 阅读 · 0 评论 -
C语言数据结构之计数排序
排序原理计数排序又称为鸽巢原理,是对哈希直接定址法的变形应用。是一个不比较排序算法,通过计数将时间复杂度降到了O(N)。排序步骤第一步⭐第二步⭐第三步⭐第四、五步⭐第六步⭐第一步找出待排序数组中最大和最小的元素第二步根据待排序元素的数值范围大小range(max-min+1),建立一个range大小的频数统计数组count第三步将统计数组 count 内的元素全部初始化为0第四步统计数组中每个值为 i 的元素出现的次数,存入数组count的第 i 项第五步对所有的计数累加第六步。原创 2024-03-25 10:02:08 · 454 阅读 · 3 评论 -
C语言数据结构之归并排序
归并排序,是创建在归并操作上的一种有效的排序算法。算法是采用分治法(Divide and Conquer)的一个非常典型的应用,且各层分治递归可以同时进行。归并排序思路简单,速度仅次于快速排序(nlogn),为稳定排序算法,一般用于对总体无序,但是各子项相对有序的数列。归并的缺点在于需要O(N)的空间复杂度,归并排序的思考更多的是解决在磁盘中的外排序问题时间复杂度:O(nlogn)空间复杂度:O(n)稳定性:稳定归并排序适用于各种数据规模的排序,而且对于大规模数据的排序效果较好。原创 2024-03-24 21:54:25 · 844 阅读 · 3 评论 -
手撕快排-用惯sort的你,真的懂快排吗
快速排序(Quicksort):是由冒泡排序的一种改进,由Hoare在1960年提出。快速排序是指通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序。整个排序过程可以递归进行,以此达到整个数据变成有序序列。在VS中Release版本下可以优化绝大部分递归调用因为递归是一种压栈的操作,而系统提供的栈中的空间并不是很多,所以在数据量庞大项目中我们往往会选择非递归的方法}ST;assert(ps);原创 2024-03-22 17:31:38 · 1192 阅读 · 5 评论 -
C语言数据结构之堆排序
堆排序的主要优点在于它具有稳定的时间复杂度 O(nlogn),适用于大规模数据集的排序,而且是一种原地排序算法,不需要额外的空间。但它并不适用于小规模数据集,因为其常数项较大。堆排序也不是稳定排序,即相同值的元素在排序后的相对位置可能会改变。原创 2024-03-12 17:29:11 · 846 阅读 · 1 评论 -
C语言数据结构之二叉堆
普通的二叉树是不适合用数组来存储的,因为可能会存在大量的空间浪费。而完全二叉树更适合使用顺序结构存储。而我们今天学的堆 总是一棵 完全二叉树原创 2024-03-09 11:33:35 · 1183 阅读 · 8 评论 -
双指针解决三元组问题
首先我们从(暴力枚举)的方法开始考虑我们直接使用三重 for 循环枚举三元组,时间复杂度为 O(N^3) 这样效率是不高的,所以我们要在暴力的基础上不断的去 优化 算法原创 2024-03-06 12:58:20 · 908 阅读 · 4 评论 -
排序算法之插入排序(探秘直接、希尔之间谁更快)
1>当gap > 1时都是预排序,目的是让数组更接近于有序。当gap == 1时,数组已经接近有序的了,这样就会很快。这样整体而言,可以达到优化的效果。希尔排序的时间复杂度不好计算,因为。原创 2024-03-04 13:27:46 · 929 阅读 · 1 评论 -
C语言数据结构之两道OJ题带你走近环形链表
给定一个链表的头节点 head,返回链表开始入环的第一个节点。如果链表无环,则返回null。如果链表中有某个节点,可以通过连续跟踪next指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数pos来表示链表尾连接到链表中的位置(索引从 0 开始)。如果pos是-1,则在该链表中没有环。注意:pos不作为参数进行传递,仅仅是为了标识链表的实际情况。原创 2024-02-02 17:35:33 · 994 阅读 · 0 评论 -
C语言数据结构之二叉树
树是一种非线性的数据结构,它是由nn>=0)个有限结点组成一个具有层次关系的集合把它叫做树是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的有一个特殊的结点,称为根结点,根节点没有前驱结点除根节点外,其余结点被分成M(M>0)个互不相交的集合:T1T2… …Tm其中每一个集合Ti(1原创 2024-01-31 09:06:38 · 1526 阅读 · 4 评论 -
C语言数据结构之线性表-栈和队列篇
1>队列是在队尾入队,队头出队,即两边都可操作栈的入栈和出栈都是在栈顶进行的,无法对栈底直接进行操作栈具有后进先出的性质,队列具有先进先出的性质栈就如一个杯子只能从栈顶开始遍历整个元素队列就如一个空筒可从首尾两端遍历整个元素。原创 2024-01-28 13:11:19 · 887 阅读 · 3 评论 -
C语言数据结构之线性表-双向链表篇
注意:这里的 带头 跟前⾯我们说的 头节点 是两个概念,实际前面的在单链表阶段称呼不严 谨,但是为了大家更好的理解就直接称为单链表的头节点原创 2024-01-26 15:53:22 · 984 阅读 · 3 评论 -
C语言数据结构之线性表-单链表篇
链表的结构跟火车车厢相似,我们需要根据乘客的数量来增删我们车的数量,但其过程不会影响其他车厢,每节车厢都是独立存在的。车厢是独立存在的,且每节车厢都有车门。每节车厢里都放⼀把下⼀节车厢的钥匙在前⼀个节点存放下⼀个节点的地址,就可以访问下一个节点//将数据类型重命名,反正以后换类型所带来的麻烦//数据域-车厢号//指针域-指向下一节车厢的钥匙}SL;原创 2024-01-24 16:34:15 · 1199 阅读 · 2 评论 -
C语言数据结构之线性表-顺序表篇
线性表(linearlist):是n个具有相同特性的数据元素的有限序列。线性表是⼀种在实际中广泛使用的数据结构,常见的线性表:顺序表、链表、栈、队列、字符串。线性表在逻辑上是线性结构,也就说是连续的⼀条直线。但是在物理结构上并不⼀定是连续的, 线性表在物理上存储时,通常以数组和链式结构的形式存储。#include //标准的输入输出#include//开辟动态空间的#include//断言//对变量类型的重命名//指向开辟的动态空间。原创 2024-01-18 00:01:11 · 976 阅读 · 1 评论