自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(23)
  • 收藏
  • 关注

原创 【数据结构与算法】AOV网、AOE网、关键路径

若用DAG图 (有向无环图) 表示一个工程,顶点表示活动,有向边表示顶点i必须先与顶点j进行,则将这种有向图称为顶点表示活动的网络,简称AOV网络。AOV网络是一个不带权的DAG图、边仅表示活动的先后关系。例如:12345AOE网若用带权DAG图表示一个工程,顶点表示事件,有向边表示活动,有向边的权值表示活动 i -> j 的开销,则将这种带权有向图称为用边表示活动的网络,简称AOE网。AOE网络是一个带权的DAG图,用边表示事件的先后顺序和活动的开销。在AOE网络中,仅有一个入度

2024-06-26 10:30:30 963

原创 【数据结构与算法】有向无环图与拓扑排序

DAG图的应用很广泛,但是最常用的地方是用来表示活动网络,例如,后台常用的任务调度工具dolphinscheduler,核心就是用DAG图来描述工作流。根据这个思路,我们可以知道,若图中不存在没有前驱的顶点,且DAG图不为空,则说明图中一定含有环路。若一个有向图中不存在环,则称这个有向图为有向无环图,简称DAG图。此时图为空,拓扑排序结束。对该图进行拓扑排序。

2024-06-25 10:00:47 716

原创 【数据结构与算法】Dijkstra算法、Floyd算法

Dijkstra实际上是在利用贪心的原则更新维护源点与集合中的顶点可达的顶点之间的路径,并且每次选择一个未被加入到集合中且到源点距离最近的顶点,记录它和源点之间的距离为最短路径,把它加入到集合中。Dijkstra基于贪心算法,它的核心是找出当前集合中顶点可达的,与源点最近的顶点,把它与源点之间的路径视为源点到该点的最短路径,并把它加入到集合中。经典的求带权图的单源最短路径的算法有Dijkstra(迪杰斯特拉)算法,求每对顶点间的最短路径的算法有Floyd(弗洛伊德)算法。另一种是求每对顶点之间的最短路径。

2024-06-24 11:37:58 771

原创 【数据结构与算法】顺序查找、折半查找、分块查找

顺序查找,又叫线性查找。适用于线性表。它的核心思路是从线性表的一端开始,逐个检查关键字是否满足给定条件。若满足条件,则返回下标。若已经查找到了线性表的另一端,但还没有找到符合给定条件的元素,则返回查找失败。

2024-06-21 09:47:13 977

原创 【数据结构与算法】最小生成树

对于一个带权连通无向图G来说,生成树不同,每棵树的权(树中所有边上的权值之和)也不同。权值之和最小的那棵生成树称为G的最小生成树(Minimum-Spanning-Tree,MST)。例如,上文中,G1是G的最小生成树。若图G中存在权值相同的边,则G的最小生成树可能不唯一。当图G中的各边权值互不相等时,最小生成树是唯一的。若无向连通图G的边数比定点数少1,则G的最小生成树就是它本身。虽然图G最小生成树可能不唯一,但权值之和总是唯一的,而且是最小的。最小生成树的边数为顶点树减1。

2024-06-18 15:24:42 1083

原创 【数据结构与算法】深度优先搜索(DFS)

对于考研人来说,BFS和DFS指的是图的两种遍历算法。但是严格意义上说,BFS和DFS是两种搜索策略。BFS代表算法在执行时,会像树的层次遍历那样,从属于同一个结点的后继的访问顺序相邻。DFS代表算法在执行时,会像树的先序遍历那样,沿着某条路径走到终点,再返回走另外一条路径。

2024-06-18 09:27:23 910

原创 【数据结构与算法】广度优先搜索(BFS)

对于考研人来说,BFS和DFS指的是图的两种遍历算法。但是严格意义上说,BFS和DFS是两种搜索策略。BFS代表算法在执行时,会像树的层次遍历那样,从属于同一个结点的后继的访问顺序相邻。DFS代表算法在执行时,会像树的先序遍历那样,沿着某条路径走到终点,再返回走另外一条路径。

2024-06-17 16:22:18 1087

原创 【数据结构与算法】图的基本概念

图是一种非线性的逻辑结构。如果在某个结构中,任意两个元素之间都存在多对多的关系,那么我们就把这个结构称为图。图GGG由顶点集VVV和 表示顶点之间联系的边集EEE组成,记为GVEG=(V,E)GVE,其中VVV为有限非空集合。由于人们习惯于将有关联的两个元素连接起来,因此,图结构又被称为网状结构。与线性表、树不同的是,线性表可以是空表,树可以是空树,但图不可以是空图。

2024-06-14 15:07:46 738

原创 【数据结构与算法】并查集

在现实中,我们可能会遇到判断一个物品属于哪个集合的情况。例如,我们看到一个人,只需要一眼我们就能知道他是属于人这个物种集合里的生物。那么在计算机里如何实现这个操作的呢?我们很容易就能够想到,设置一个表示集合的结点,然后给每个元素添加一个指针,指向从属的集合结点。现在又有一个问题了:我们现在有苹果集合、梨子集合、香蕉集合,它们都是属于水果集合,那么在计算机里该怎么表示这个集合关系呢?很显然,我们只需要让代表苹果集合、梨子集合的结点、香蕉集合的结点指向代表水果集合的结点就可以了。

2024-06-12 16:16:12 618

原创 【数据结构与算法】哈夫曼树与哈夫曼编码

在含有n个带权叶结点的二叉树中,其中带权路径最小的二叉树称为哈夫曼树,也称最优二叉树。哈夫曼编码是一种变长的二进制前缀编码,它利用哈夫曼树来辅助构造编码,能够非常有效地压缩二进制数据。

2024-06-12 11:02:15 923 1

原创 【数据结构与算法】树、森林与二叉树的转换

在前面的文章中(树的基本概念和二叉树的基本概念)我们提到,树和二叉树都可以用二叉链表作为存储结构,所以我们可以用同一存储结构的不同解释,将一棵树转化为二叉树。

2024-06-06 15:52:51 326

原创 【数据结构与算法】线索二叉树

传统的二叉链表存储二叉树,仅能表示一种父子关系,不能直接得到结点在遍历过程中的前驱和后继,而且,有n个结点的二叉树使用二叉链表存储时,存在n+1个空指针。依据4,我们可以知道,对于有左右孩子的双亲结点来说,它的后继是无法直接找到的。当然,为了表明判断结点无左左孩子、无右孩子,因此线索二叉树还需要增加了两个标识,ltag和rtag来表明结点是否存在左孩子、右孩子。因为遍历前驱和遍历后继的信息只有在遍历时才能够得到,因此线索化的实质就是遍历一次二叉树。加上线索的二叉树,我们称为线索二叉树。

2024-06-06 11:12:16 440

原创 【数据结构与算法】二叉树的遍历

二叉树的遍历是指按照某条搜索路径访问树中的每个结点,使得每个结点均被访问且仅访问一次。由二叉树的定义可知,遍历一棵二叉树要决定根节点N、左子树L、右子树R的访问顺序。依据从左往右的原则,常见的遍历顺序有先序遍历(NLR)、中序遍历(LNR)、后序遍历(LRN)。

2024-06-06 09:22:30 472

原创 【数据结构与算法】二叉树的基本概念

二叉树是一种特殊的树形结构,其特点是每个结点至多只有两颗子树,并且二叉树的子树有左右之分,其次序不可颠倒。根据树的基本概念可知,二叉树是一棵有序树。注意:二叉树和度为2的树、度为2的有序树不是同一概念,不要弄混淆。如果将二叉树的左右子树颠倒,那么将产生一棵新的二叉树(与原来的二叉树不同)。即使树中结点只有一棵子树,也要区分它是左子树还是右子树。

2024-06-05 21:20:05 735

原创 【数据结构与算法】树的基本概念

树是 n(n>=0)个结点的有限集。当 n=0 时,称为空树。有且仅有一个特定的称为根的节点。当 n>1 时,其余节点可分为 m(m>0)个互不相交的有限集,每个集合本身又是一棵树,称为根的子树。树的根结点没有前驱,除根结点外的所有结点有且只有一个前驱。树中的所有结点都可以有零个或多个后继。

2024-06-05 11:14:31 888

原创 【计算机网络】(三)物理层 - 通信基础

本篇文章大部分内容摘自谢仁希编著的《计算机网络 第8版》和《王道2025计算机网络考研指导》😘❤️❤️❤️。现有的计算机网络中的硬件设备和传播媒体非常繁多,而通信手段也有许多不同的方式。物理层的作用就是要尽可能地屏蔽掉这些传输媒体和通信手段的差异,使之上的数据链路层感觉不到这些差异,这样就可使数据链路层只需要考虑如何完成本层的协议和服务。

2024-04-23 11:59:56 1468 5

原创 【计算机网络】(二)计算机网络的体系结构与参考模型

本篇文章大部分内容摘自谢仁希编著的《计算机网络 第8版》和《王道2025计算机网络考研指导》😘❤️❤️❤️。计算机网络是个非常复杂的系统。为了说明这一点,可以设想一种最简单的情况:连接在网络上的两台计算机主要互相传送文件。显然,在两台计算机之间必须有一条传送数据的通路。但这还远远不够。至少还有以下几项工作需要去完成:

2024-04-18 21:54:35 1122 1

原创 【计算机网络】(一)计算机网络概述

本篇文章大部分内容摘自谢仁希编著的《计算机网络 第8版》和《王道2025计算机网络考研指导》😘❤️❤️❤️计算机网络(简称为网络)由若干节点(node)和连接这些节点的链路(link)组成。网络中的节点可以是计算机、集线器、交换机或路由器等。有多个网络通过一些路由器相互连接起来,构成的一个覆盖范围更大的计算机网络,这样的网络称为互连网(internetwork或internet)。因此,互连网是“网络的网络”。PS:这里是internet而不是Internet哦!

2024-04-14 16:19:58 7320 4

原创 【数据结构与算法】线性表、顺序表、静态顺序表、动态顺序表

本篇文章大部分内容摘自严蔚敏、李冬梅、吴伟民编著的由人民邮电出版社出版发行的《数据结构:C语言版》。本文中的所有代码使用C23标准的C语言实现,因此在编译时请加上-std=c2x,代码中若存在错误,欢迎大家在评论区指出。😘❤️❤️❤️线性表是最基本且最常用的一种线性结构,同时也是其他数据结构的基础,尤其是单链表,是贯穿整个数据结构课程的基本技术。在日常生活中,线性表的例子比比皆是。例如,26个英文字母(A,B,C, …, Z)、学生成绩表等。

2024-04-05 11:31:46 831 1

原创 【数据结构与算法】数据结构与算法的基本概念

本篇文章大部分内容摘自严蔚敏、李冬梅、吴伟民编著的由人民邮电出版社出版发行的《数据结构:C语言版|第2版》,少部分摘自《王道2025数据结构考研复习指导》,也有部分内容为本人的思考。😘❤️❤️❤️算法(Algorithm)是为了解决某类问题而规定的一个有限长的操作序列。一个算法必须满足以下5个重要特性。有穷性:一个算法必须总是在执行有穷步后结束,且每一步都必须在有穷时间内完成。确定性:对于每种情况下所应执行的操作,在算法中都有确切的规定,不会产生二义性,使算法的执行者或阅读者都能明确其含义及如何执行。

2024-04-02 18:40:28 1153

原创 C++语法基础(二):数据类型、变量、常量、命名规范

本文介绍了C++中的数据类型、数据类型的空间占用和范围、数据类型的别名、枚举类型,以及变量和常量的概念和命名规范。C++中有多种基本的数据类型,包括整型、浮点型、字符型、布尔型和指针等。每种数据类型都有一定的内存空间占用和范围。使用sizeof关键字可以获取数据类型的内存占用空间,使用limits头文件中的常量可以获取数据类型的取值范围。可以使用typedef关键字为数据类型定义别名,提高代码的可读性和易维护性。枚举类型用于表示具有几种可能固定值的变量,例如表示游戏难度等。

2023-07-30 20:18:34 628 1

原创 C++语法基础(一):“hello world“与C++注释语法

本文介绍如何编写第一个C++程序以及C++注释语法与注释编写规范。

2023-04-18 09:27:53 633

原创 【C/C++】vscode配置C/C++环境

windows环境下vscode配置c/c++运行环境,保姆级教学,介绍了两种配置方法,以及如何解决终端乱码问题

2022-11-12 12:05:36 78009 82

【数据结构实现】C语言实现顺序表

内容概要:线性表是一种相当灵活的数据结构,其长度可以根据需要增长或缩短,对线性表的数据元素不仅可以进行访问,还可以进行插入和删除等操作。本次试验用C语言实现顺序表,实现 Init 初始化线性表 Destory 销毁线性表 Clear 清空线性表 IsEmpty 判断线性表是否为空 Length 获取线性表的长度 GetElem 获取线性表中某个元素的值 Locate 在线性表中查找指定元素 PriorElem 返回指定元素的前驱元素的值 NextElem 返回指定元素的后继元素的值 Insert 在指定位置插入元素 Delete 删除指定位置元素 Traverse 遍历线性表 等功能

2023-03-06

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除