- 博客(30)
- 收藏
- 关注
原创 图的遍历及其C语言实现
就像在同心圆中层层扩展,从起始点开始,先访问所有与起始点直接相连的节点,再访问与这些节点相连的节点,以此类推。就像在迷宫中行走,选择一个方向不断往前走,直到无法再继续前进时才回头寻找其他路径。若有 N个顶点、 E条边,时间复杂度是。若有 N个顶点、 E条边,时间复杂度是。
2024-07-29 21:30:12
384
原创 图——“多对多”的逻辑结构
名字:图(Graph)数据对象集:G( V, E )由一个非空的有限顶点集合V和一个有限边集合E组成。操作集合:对于任意图G∈Graph,以及v∈V,e∈E。Graph Create():建立并返回空图;Graph InsertVertex(Graph G , Vertex v):将v插入G;Graph InsertEdge(Graph G , Edge e):将e挿入G;void DES( Graph G , Vertex v ):从顶点v出发深度优先遍历图G;
2024-07-29 18:33:12
330
原创 并查集——集合的高效实现
并查集(Union-Find)是一种特殊的数据结构,它可以用于处理一些不相交集合的合并及查询问题。集合是一个更广泛的概念,是一组无序且不重复元素的组合。并查集是对集合的一种具体应用和操作方式。在并查集中,每个元素都属于一个特定的集合。并查集主要支持两个重要操作:“合并”(Union)和“查找”(Find)。“合并”操作将两个集合合并为一个集合。“查找”操作用于确定一个元素所属的集合。
2024-07-29 12:12:13
497
原创 哈夫曼树与哈夫曼编码
哈夫曼树的一个典型应用是文件压缩,尤其在ZIP文件、JPEG图片以及MP3音乐文件等多种压缩格式中都有广泛应用。为了说明它的具体应用,我们可以以文本文件压缩为例。
2024-07-28 21:55:11
679
原创 堆——优先队列的实现
用数组表示的完全二叉树,堆是一种常用来实现优先队列的树形数据结构。堆通常以树形结构组织元素,但使用数组来存储这些元素。这种方法可以高效地管理完全二叉树的结构。以下是一个更详细的解释以及如何在C语言中实现这个概念。
2024-07-28 16:57:57
432
原创 平衡二叉树(AVL树)
当我们以不同次序将结点插入二叉树时,会导致出现不同的搜索树,以至于每一种树都有一种平均搜索长度ASL,那么什么情况下树的搜索长度最小呢?〖例〗搜索树结点不同插入次序,将导致不同的深度和平均查找长度ASL可以看到当左右子树的高度差不超过1时就能达到我们的要求,也就是平衡二叉树了。平衡因子(Balance Factor,简称BF): BF(T) = hL-hR, 其中hL和hR分别为T的左、右子树的高度。平衡二叉树AVL树空树,或者。
2024-07-27 22:35:35
195
原创 二叉搜索树
也称或二叉搜索树:一棵二叉树,可以为空;如果不为空,满足以下性质:1. 非空的所有的键值。2. 非空的所有的键值。3. 左、右子树。二叉搜索树操作的特别函数::从二叉搜索树BST 中查找元素X,返回其所在结点的地址;:从二叉搜索树BST中查找并返回 最小元素所在结点的地址;:从二叉搜索树BST中查找并返回 最大元素所在结点的地址。
2024-07-27 15:37:42
896
原创 遍历二叉树的应用:由两种遍历序列确定二叉树
对左子树和右子树分别递归使用相同的方法继续分解。 根据根结点在中序遍历序列中分割出左右两个子序列。 根据先序遍历序列第一个结点确定根结点;
2024-07-27 12:47:52
95
原创 遍历二叉树的应用:输出二叉树中的叶子结点
由于我们说过,在进行二叉树遍历时所走的路线是一样的只是访问结点的时机不同而已,对于这个问题,我们采用任意一种遍历方式;只要在输出结点的时候加一个前置的条件判定——“该节点的左右子树是否都为空?
2024-07-27 12:12:18
208
原创 二叉树的抽象数据类型定义
void LevelOrderTraversal( BinTree BT ):层次遍历,从上到下、从左到右。 void PreOrderTraversal( BinTree BT ):先序----根、左子树、右子树; void InOrderTraversal( BinTree BT ): 中序---左子树、根、右子树; void PostOrderTraversal( BinTree BT ):后序---左子树、右子树、根。数据对象集:一个有穷的结点集合。:遍历,按某顺序访问每个结点;
2024-07-26 21:08:58
172
原创 二叉树及其存储实现C语言(附上源码)
二叉树是一种特殊的树型结构,其特点是每个结点至多只有两棵子树(即二叉树不存在度大于二的结点),并且二叉树的子树有左右之分,次序不可颠倒【有序树二叉树T:一个有穷的结点集合。-这个集合可以为空;-若不为空,则它是由根结点和称为其左子树TL和右子树TR的 两个不相交的二叉树组成。 二叉树具体五种基本形态 二叉树的子树有左右顺序之分。
2024-07-26 17:24:13
345
原创 什么是树?
树(Tree): n(n≥0)个结点构成的有限集合。当n=0时,称为空树;对于任一棵非空树(n> 0),它具备以下性质: 树中有一个称为“根(Root)”的特殊结点,用 r 表示; 其余结点可分为m(m>0)个互不相交的有限集T1,T2,... ,Tm,其 中每个集合本身又是一棵树,称为原来树的“子树(SubTree)
2024-07-26 16:37:54
545
原创 考研数据结构之时间复杂度的计算
1.基本操作即只有常数项,认为其时间复杂度为O(1)2.顺序结构,时间复杂度按加法进行计算3.循环结构,时间复杂度按乘法进行计算4.分支结构,时间复杂度取最大值5.判断一个算法效率时,往往只需要关注操作数量的最高次项,其他次要项和常数项可以忽略在没有特殊说明时,我们所分析的时间复杂度都是指最坏时间复杂度。
2024-07-25 11:56:02
357
原创 PostMan工具的使用
代码编写完后,我们要想测试,只需要打开浏览器直接输入地址发送请求即可。发送的是GET请求可 以直接使用浏览器,但是如果要发送的是POST请求呢?如果要求发送的是post请求,我们就得准备页面在页面上准备form表单,测试起来比较麻烦。所以我 们就需要借助一些第三方工具,如PostMan. PostMan是一款功能强大的网页调试与发送网页HTTP请求的Chrome插件。PostMan是一款功能强大的网页调试与发送网页HTTP请求的Chrome插件。作用:常用于进行接口测试特征:简单 实用 美观 大方。
2024-07-25 10:13:41
157
原创 算法的理解及其复杂度分析
根据算法写成的程序在执行时占用存储单元的长度。这个长度往往与输入数据的 规模有关。空间复杂度过高的算法可能导致使用的 内存超限,造成程序非正常中断。
2024-07-24 17:40:37
556
原创 队列及其C语言实现
队尾入队,队头出队,一个受限制性的线性表。队列(Queue):具有一定操作约束的线性表• 插入和删除操作:只能在一端插入,而在另一端删除。• 数据插入:入队列(AddQ)• 数据删除:出队列(DeleteQ)• 先来先服务• 先进先出:FIFO。
2024-07-24 09:57:17
1255
原创 线性表及其C语言实现
线性表(Linear List):由同类型数据元素构成有序序列的线性结构。特点:1.表中元素个数称为线性表的长度;2.线性表没有元素时称为空表;3.表的起始位置称为表头,表的结束位置称为表尾。
2024-07-22 23:04:43
302
原创 什么是数据结构
抽象数据类型,是一种描述数据结构的很好的方法。是对数据结构的数据集合及其操作集合的抽象表示。数据类型数据对象集合数据集合相关操作集合抽象与存放数据的机器无关与数据存储的物理结构无关与实现操作算法的编程语言均无关“只描述数据对象集与操作集是什么?不涉及怎么做到的问题。
2024-07-22 23:03:22
105
原创 高通410随身wifi刷入debian后拓展存储及部署视频网站和外壳加装
带5v供电口的拓展坞,母对母usb转接口,网上买的便宜优盘,连接方式如下图。
2024-07-16 22:57:28
701
2
原创 最优装载问题与贪心算法
System.out.println("要装的集装箱号为:");然后依此顺序将集装箱装上轮船,直到不能装为止。个集装箱依其重量从小到大排序。
2023-06-07 19:22:17
94
1
原创 活动安排问题与贪心算法
/这里需要按每个活动的结束时间将二表按升序排列。存储所选择的活动,先将排序好的第一个活动加入集合。//双层循环遍历俩表。3,直到所有的活动都被检查完。个活动按结束时间的非减序排列。中所有活动的最大结束时间。
2023-06-07 18:07:33
55
1
原创 背包问题与贪心算法
i++) {//遍历每个商品是否装下,或者是装部分。System.out.println("贪心背包所装下的最大物品价值为:"+max+"元!//与动态规划不同的是,贪心算法的每一步都是取最优值,所以不一定会得出问题0-1背包的最优解。//贪心算法解决背包问题时的策略是将按单位价值比最大的物品依次向下遍历直到装满背包。//在这里用一下定制排序。用贪心算法解背包问题的基本步骤。
2023-06-06 19:59:05
64
1
原创 矩阵连乘与动态规划
/矩阵规模,pi-1表示矩阵Ai的行,pi表示Ai的列。System.out.println("该矩阵序列连乘问题的最优值是:" + min);r++)//r个矩阵相乘。
2023-06-05 13:35:41
56
1
原创 最长公共子序列与动态规划
System.out.println("其最长公共子序列的LCS为:" + max);//根据递推公式一行一行向下填表。
2023-06-05 11:41:02
42
1
原创 动态规划与最大子段和问题
动态规划算法在许多实际问题中都非常有效,尤其是那些具有重叠子问题和最优子结构特征的问题。例如,对于一个背包问题,状态可以表示为一个包含所有物品和它们的重量的数组。它的基本思想是将大问题分解为若干个相互依赖的小问题,通过求解小问题的最优解来得到整个问题的最优解。选择最优子结构:为了避免重复计算,需要确保只有当当前状态的最优解可用时才更新记忆化表中的值。这些初始值通常是问题的边界条件,即问题中已知的最小或最大值。回溯求解:根据状态转移方程从最后一个状态开始,逐步回溯到初始状态,以求解整个问题的最优解。
2023-05-27 23:47:39
328
2
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人