- 博客(20)
- 收藏
- 关注
原创 《算法与数据结构》第七章[算法5]:拓扑排序
本文介绍拓扑排序算法及其在课程安排中的应用。课程间的先修关系构成有向无环图(DAG),拓扑排序通过线性排列顶点,确保每门课程的前驱课程均在其之前完成。算法基于顶点入度,逐步选择入度为0的顶点并更新图中其他顶点的入度,直至所有顶点被处理。通过示例演示了算法的具体步骤,并指出拓扑排序结果可能不唯一。该算法适用于解决DAG中的依赖关系问题,如课程学习顺序规划。
2025-10-24 10:45:25
706
原创 《算法与数据结构》第七章[算法4]:最短路径
本文将认识最短路径(Shortest Path)的概念及其经典算法 Dijkstra 与 Floyd‑Warshall。首先明确相关基础定义与约束;随后结合邻接矩阵实现,介绍 Dijkstra 的思路与正确性要点、path 前驱回溯,以及 Floyd 的动态规划思想与 dist/path 更新,理解最短路径的求解。
2025-10-16 22:07:48
564
原创 《算法与数据结构》第七章[算法3]:图的最小生成树
本文大家将认识最小生成树(MST)的概念及其经典算法Prim算法。首先认识生成树的定义。然后提出最小生成树的概念,即在带权图中寻找权值总和最小的生成树。同时还会认识到两个常见的构造最小生成树的算法——Prim算法和Kruskal算法及它们如何逐步构造出一棵最小生成树。
2025-10-07 16:23:45
677
原创 《算法与数据结构》第七章[算法2]:广度优先搜索(BFS)
本文大家将认识广度优先遍历(BFS)算法的原理与实现。BFS采用“层层推进”的策略,通过队列结构实现,优先访问离起点近的所有节点,再逐步向外扩展,类似于树的层序遍历。与深度优先遍历(DFS)不同,BFS不会回溯,而是通过创建“分身”同时探索所有路径。文章详细对比了两种遍历方式的差异,并提供了基于邻接矩阵和邻接表存储结构的BFS算法C语言实现代码,包括队列初始化、入队出队操作等核心步骤。通过图示和示例分析,阐明了BFS的具体执行过程及其与队列数据结构的关系。
2025-09-29 17:33:29
850
原创 《算法与数据结构》第七章[算法1]:深度优先搜索(DFS)
本文大家将认识图的深度优先遍历(DFS)算法。DFS采用“一路走到底”的探索策略,类似于树的先根遍历。算法从起始顶点出发,访问顶点并标记为已访问,然后递归地访问其所有未访问的邻接顶点。
2025-09-27 17:06:33
1076
原创 《算法与数据结构》第七章[第1节]:图
本文将介绍图(Graph)这种多对多关系的数据结构。图由顶点集合和边集合组成,分为无向图和有向图两种基本类型。无向图中的边没有方向,用圆括号表示;有向图的边有方向,称为弧,用尖括号表示。文章还介绍了完全图、稀疏图、稠密图、带权图、子图等概念,并详细解释了顶点间的邻接关系、度、路径等术语。
2025-09-25 11:22:51
1351
原创 《算法与数据结构》第六章[第4节]:哈夫曼树
这篇文章介绍哈夫曼树及其在数据压缩中的应用。主要内容包括: 哈夫曼树的基本概念:通过字符频率构建最优编码树,使高频字符路径更短,从而减少总传输量。 核心定义:解释了路径长度、带权路径长度(WPL)等关键概念。 构造算法:详细描述了哈夫曼树的构建步骤,通过合并最小权值节点逐步形成最优二叉树。 实际意义:哈夫曼编码在ZIP、JPEG、MP3等压缩技术中的广泛应用。
2025-09-19 08:02:59
1039
原创 《算法与数据结构》第六章[第3节]:二叉树(第二部分)
线索二叉树通过利用二叉链表中的空指针域存储前驱和后继信息,提高遍历效率。具体实现中,添加ltag和rtag标记区分指针指向孩子还是线索。树和森林可通过“加线-去线-层次调整”或孩子兄弟表示法转换为二叉树,简化操作。转换方法包括兄弟结点连线、保留第一个孩子连线等步骤,从而将多叉结构转化为二叉结构。
2025-09-13 11:51:50
845
原创 《算法与数据结构》第六章[第2节]:二叉树(第一部分)
本文大家将认识二叉树的基本概念和特性。二叉树是一种每个结点最多有两棵子树,且子树有左右之分的树结构。文章详细讲解了二叉树的五种基本形态,并重点介绍了三种特殊二叉树:斜树(所有结点只有左或右子树)、满二叉树(完美对称结构)和完全二叉树(与同深度满二叉树编号一致)。此外,文章还阐述了三个重要性质:1)第i层最多2^(i-1)个结点;2)深度为k的树最多2^k-1个结点;3)终端结点数n0=度为2结点数n2+1。这些概念和性质是理解二叉树的基础。
2025-09-11 11:07:22
606
原创 《算法与数据结构》第六章[第1节]:树
本文将认识树这一数据结构的基本概念和定义。树——一种一对多的非线性数据结构。文章详细阐述了树的递归定义、相关术语(如度、叶结点、分支结点、层次等)以及有序树与无序树的区别。此外,还介绍了树的抽象数据类型及其基本操作,包括初始化、销毁、创建、清空等。树的结构特点使其适用于处理具有层次关系的数据,是计算机科学中重要的数据结构之一。
2025-09-07 14:32:28
1021
原创 《算法与数据结构》第五章[算法]:串的模式匹配算法
本文大家将认识字符串模式匹配的两种算法:朴素模式匹配算法和KMP算法。朴素算法通过主串和模式串的双重循环进行匹配,时间复杂度最坏为O((n-m+1)m)。KMP算法通过分析模式串内部重复结构,避免不必要的回溯,提高匹配效率。文章以具体示例演示了两种算法的匹配过程,并说明了KMP算法的优化思路,即利用已匹配部分的信息减少比较次数。
2025-02-07 19:29:10
1034
原创 《算法与数据结构》第五章:串
本文将认识到字符串的基本概念、比较方法和存储结构。字符串是由零个或多个字符组成的有限序列,具有子串、空格串等特殊形式。字符串比较基于字符编码值进行,类似于数值比较。字符串的抽象数据类型指出其包括初始化、复制、连接、子串操作等基本功能。在存储结构方面,同样有顺序存储和链式存储两种方式,顺序存储中串长表示和截断处理的特点,举例说明串联接操作在不同情况下的处理逻辑。通过本文可以全面了解字符串这一编程基础概念的核心要点。
2025-02-06 19:56:45
941
原创 《算法与数据结构》第四章[第2节]:队列
本文将认识队列这一先进先出(FIFO)的线性数据结构。队列的操作受限,只能在队尾插入(入队)、队头删除(出队)。日常生活中的排队场景、人工客服的排队即为队列的实际应用,重点分析循环队列的概念及其判空/满的两种方法:设置标签值法和浪费一个空间法。后者通过取模运算(rear+1)%QueueSize==front来判断队满情况,有效解决了顺序存储中假溢出问题。认真学习队列的基本操作抽象数据类型定义,为后续学习打下基础。
2025-01-07 23:48:16
1604
原创 《算法与数据结构》第四章[第1节]:栈
栈是指限定在表尾进行插入或删除操作的线性表。它有顺序存储方式和链式存储方式两种实现方式,对应有增(入栈)、删(出栈)操作。顺序存储方式下的两栈共享空间操作。最后,还有栈在两种实际问题(递归,后缀表达式)中的应用。
2024-05-27 12:04:48
1250
原创 基于《算法与数据结构》链表的学习实现高精度计算
在大家都以数组实现高精度算法时,链表实现寥寥无几,今天我们聊聊如何用双向循环链表来实现高精度算法
2024-01-02 22:16:53
2285
原创 《算法与数据结构》第三章:线性表
本文将系统介绍线性表这一基础数据结构,包括顺序存储和链式存储两种实现方式。顺序存储通过数组实现,支持随机存取但插入删除效率低;链式存储通过指针实现,插入删除高效但查找需遍历。详细讲解了单链表、循环链表、双向链表的结构特点和操作实现,并对静态链表这一特殊实现进行了说明。对比分析不同存储结构的性能特点,指出顺序存储适合频繁查询,链式存储适合频繁增删的场景。最后强调线性表是数据结构学习的基础,建议读者深入理解其原理和实现方法。全文通过代码示例和图示结合,帮助读者掌握线性表的核心概念和操作技巧。
2023-12-19 17:22:08
1467
1
原创 《算法与数据结构》第二章:算法
本文将介绍算法的基础知识,首先对比了不同算法的效率差异。算法是解决问题的有限步骤,具有有穷性、确定性、可行性和输入输出等特性。设计算法需满足正确性、可读性、健壮性、高效性和低存储需求等要求。重点讲解了算法效率的度量方法,包括时间复杂度和空间复杂度,详细说明了大O表示法及其推导规则,并列举了常见的时间复杂度类型(常数阶、线性阶、对数阶、平方阶等)。文章强调在评价算法时应关注其渐近增长趋势,而非具体执行次数,为后续数据结构学习奠定了基础。
2023-12-02 14:25:50
1191
原创 《算法与数据结构》第一章:数据结构
本文将介绍数据结构的基本概念和术语。定义数据、数据元素、数据项、数据对象和数据结构等核心概念。然后为四种逻辑结构:集合、线性结构、树形结构和图形结构,它们分别表示不同的数据元素关系。接着是两种物理存储结构:顺序存储(连续地址)和链式存储(任意地址)。最后讨论抽象数据类型(ADT),包括数据类型、原子类型、结构类型的定义,并说明ADT包含数学模型及其操作。
2023-11-30 11:32:45
1009
1
原创 基于C++及算法与数据结构的学习编写宿舍管理系统
为宿舍管理人员编写一个宿舍管理查询软件,采用交互工作方式,实现添加学生信息,按关键字进行排序,通过交互方式查询信息,查看当前全部学生信息,删除学生信息。
2023-11-25 18:04:32
3268
13
《算法与数据结构》第六章:树-二叉树的顺序存储C语言实现
2025-10-18
《算法与数据结构》第六章:树-二叉链表C语言实现
2025-10-18
《算法与数据结构》第六章:树-树的双亲表示法C语言实现
2025-10-18
《算法与数据结构》第六章:树-树的孩子表示法C语言实现
2025-10-18
《算法与数据结构》第六章:树-树的孩子兄弟表示法C语言实现
2025-10-18
《算法与数据结构》第五章:串-串的三种模式匹配C语言实现
2025-09-26
《算法与数据结构》第五章:串-串的堆分配存储C语言实现
2025-09-26
《算法与数据结构》第五章:串-串的块链存储C语言实现
2025-09-26
《算法与数据结构》第五章:串-串的顺序存储C语言实现
2025-09-18
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅