数据结构——用C语言描述
文章平均质量分 66
基本覆盖大一下《程序与算法基础II》课程。
狂放不羁霸
学习令人大脑颤抖 ^_^
展开
-
查找——基于线性表的查找法
基于线性表的查找法具体可分为顺序查找法、折半查找法、分块查找法。本文主要介绍顺序查找法和折半查找法的算法实现和算法性能分析。原创 2022-07-21 15:09:44 · 881 阅读 · 0 评论 -
最短路径问题(Dijkstra算法、Floyd算法)
path[i]表示目前已经找到的从开始点到终点的当前最短路径顶点序列。dist[i]表示目前已经找到的从开始点到终点的当前最短路径长度。迪杰斯特拉(Dijkstra)提出了求解这种问题的方法。Member函数用于判断顶点是否在顶点集S中。Dijkstra算法。...原创 2022-07-15 11:08:48 · 447 阅读 · 0 评论 -
有向无环图的应用——关键路径
目录一、什么是AOE网?1.1 AOE网的定义和性质1.2 AOE网的应用二、什么是关键路径?2.1 关键路径和关键活动的定义2.2 寻找关键活动2.2.1 事件的最早发生时间ve[i]2.2.2 事件的最晚发生时间vl[i]2.2.3 活动的最早开始时间ee[i] 2.2.4 活动的最晚开始时间el[i] 三、关键路径算法实现3.1 修改拓扑排序算法3.2 关键路径算法AOE网:在一个表示工程的带权有向图中,用顶点表示事件,用有向边表示活动,边上的权值表示活动的持续时间,称这样的有向图为边表示活原创 2022-07-13 12:06:01 · 1692 阅读 · 0 评论 -
有向无环图的应用——拓扑排序
目录一、什么是AOV网?二、什么是拓扑排序?2.1 拓扑排序的定义2.2 拓扑排序的基本思想三、拓扑排序算法的实现3.1 算法思想3.1.1 设置辅助数组indegree[ ]3.1.2 设置辅助栈3.1.3 算法思想3.2 算法实现3.2.1 求入度3.2.2 拓扑排序AOV网:在一个表示工程的有向无环图中,用顶点表示活动,用弧表示活动间的优先关系,称这样的图为顶点表示活动的网(Activity On Vertex Network),简称为AOV网。 注意: 通过拓扑排序得到的拓扑序列使得AOV网中所原创 2022-07-12 16:11:35 · 2527 阅读 · 0 评论 -
图的最小生成树(Prim算法、Kruskal算法)
目录一、最小生成树1.1 定义1.2 性质二、Prim算法2.1 基本思想2.2 算法思想2.3 算法实现三、Kruskal算法3.1 基本思想3.2 算法思想3.3 算法实现示意图: 说明:原创 2022-07-11 10:02:32 · 3140 阅读 · 0 评论 -
图的遍历(深度/广度优先搜索)
目录一、深度优先搜索 1.1 基本思想 1.2 算法实现1.2.1 递归算法1.2.2 非递归算法 二、广度优先搜索 2.1 基本思想 2.2 算法实现三、查找邻接点的函数3.1 基于邻接矩阵表示3.2 基于邻接表表示如图所示: 1.2.2 非递归算法 如图所示:...原创 2022-07-03 11:03:03 · 233 阅读 · 0 评论 -
图的存储结构(邻接矩阵、邻接表、十字链表)
目录一、相关概念二、图的存储结构2.1 邻接矩阵表示法2.1.1 邻接矩阵存储的基本思想2.1.2 存储结构的定义2.1.3 用邻接矩阵表示法创建带权有向图2.1.4 销毁邻接矩阵 2.2 邻接表表示法2.2.1 邻接表存储的基本思想2.2.2 存储结构的定义2.2.3 用邻接表表示法创建带权有向图2.2.4 销毁邻接表2.3 十字链表表示法2.3.1 十字链表存储的基本思想2.3.2 存储结构的定义 2.3.3 用十字链表表示法创建带权有向图 2.3.4 销毁十字链表无权图的邻接矩阵:带权图的邻接矩阵:原创 2022-06-26 17:56:00 · 2787 阅读 · 0 评论 -
哈夫曼树及其应用
目录一、相关概念二、构建哈夫曼树三、哈夫曼树的存储结构和类型定义3.1 存储结构 3.2 类型定义 四、哈夫曼树的算法实现4.1 初始化哈夫曼树4.2 选出权重最小的两个结点4.3 构建哈夫曼树(1) 路径、路径长度和树的路径长度路径:从一个结点到另一个结点的分支序列。路径长度: 从一个结点到另一个结点所经过的分支数目。树的路径长度:从根结点到每个结点的路径长度之和。(2)结点的权和带权路径长度 结点的权:给树的每个结点赋予的一个具有实际意义的实数。带权路径长度:从根结点到某一结点的路径长度与该结点的权的原创 2022-06-24 17:08:46 · 1246 阅读 · 0 评论 -
树与森林的基本操作
目录一、树的遍历1.1 先根遍历1.1.1 算法思想1.1.2 算法实现 1.2 后根遍历1.2.1 算法思想1.2.2 算法实现二、树的遍历算法应用2.1 树的创建2.2 树的销毁三、森林的遍历 3.1 先序遍历3.1.1 算法思想3.1.2 算法实现3.2 中序遍历3.2.1 算法思想 3.2.2 算法实现3.3 后序遍历3.3.1 算法思想3.3.2 算法实现四、森林的遍历算法应用4.1 森林的创建4.2 森林的销毁 如图所示:1.2 后根遍历1.2.1 算法思想如图所示:二原创 2022-06-24 14:51:12 · 422 阅读 · 0 评论 -
树、森林和二叉树的关系(树的存储结构、互相转换)
目录一、树的存储结构1.1 双亲表示法1.1.1 存储思想1.1.2 存储结构定义 1.2 孩子表示法1.2.1 存储思想1.2.2 存储结构定义 1.3 孩子双亲表示法1.3.1 存储思想 1.3.2 存储结构定义二、树、森林与二叉树的相互转换2.1 树转二叉树2.2 森林转二叉树2.3 二叉树转树或森林如图所示: 1.2 孩子表示法1.2.1 存储思想如图所示: 1.3 孩子双亲表示法1.3.1 存储思想 如图所示:扭一扭:二、树、森林与二叉树的相互转换2原创 2022-06-14 20:56:43 · 191 阅读 · 0 评论 -
二叉树的遍历(非递归)—— 基于栈的递归消除
目录一、DLR先序遍历1.1 算法实现1.2 算法思想二、中序遍历 2.1 算法实现2.2 算法思想 三、后序遍历3.1 算法实现3.2 算法思想 1.2 算法思想 2.2 算法思想 3.2 算法思想原创 2022-06-23 22:01:58 · 416 阅读 · 1 评论 -
二叉树的遍历以及遍历算法的应用(链式存储结构)
目录一、二叉树的遍历(递归算法)1.1 DLR先序遍历1.2 LDR中序遍历1.3 LRD中序遍历二、遍历算法的应用2.1 输出二叉树中的结点2.2 输出二叉树中的叶结点 2.3 统计叶结点数目2.4 二叉树的创建2.4.1 介绍:先序定位串2.4.2 算法实现2.5 二叉树的销毁2.6 求二叉树的高度1.2 LDR中序遍历1.3 LRD中序遍历二、遍历算法的应用2.1 输出二叉树中的结点2.2 输出二叉树中的叶结点 2.3 统计叶结点数目原创 2022-06-23 16:14:10 · 1646 阅读 · 0 评论 -
二叉树的基础知识(定义和性质、存储结构、遍历)
目录一、二叉树的定义和性质1.1 二叉树的定义1.2 二叉树的性质二、二叉树的存储结构 2.1 顺序存储结构 2.2 链式存储结构三、二叉树的遍历 3.1 DLR先序遍历3.2 LDR中序遍历3.3 LRD后序遍历极端情况:如图所示: 如图所示:三、二叉树的遍历 二叉树的基本结构:...原创 2022-06-23 14:57:29 · 605 阅读 · 0 评论 -
稀疏矩阵(表示、转置)
目录一、稀疏矩阵的三元组表示法1.1 稀疏矩阵非零元素的三元组存储表示1.2 稀疏矩阵三元组表的类型定义二、用三元组实现稀疏矩阵的转置运算 2.1 方法一:列序递增转置法 2.1.1 算法思想2.1.2 算法实现2.2 方法二:一次定位快速转置法 2.2.1 算法思想2.2.2 算法实现 如图所示: 如图所示: 二、用三元组实现稀疏矩阵的转置运算 2.1 方法一:列序递增转置法 2.1.1 算法思想如图所示:2.2 方法二:一次定位快速转置法 2.2.1 算法思想原创 2022-06-22 17:54:05 · 5936 阅读 · 0 评论 -
串的模式匹配——KMP算法
目录一、算法思想1.1 BF算法的改进思路 —— KMP算法1.2 通过人工计算next数组二、算法实现2.1 通过代码计算next数组 2.2 KMP算法原创 2022-06-22 15:55:43 · 88 阅读 · 0 评论 -
串的模式匹配——BF算法
一、模式匹配简介S为主串,T为模式串。在主串S中寻找模式串T的过程称为模式匹配。定位函数的功能是求模式串T在主串S中从pos的位置开始第一次出现的位置序号,该函数也称为串的模式匹配。...原创 2022-06-22 10:37:41 · 1478 阅读 · 0 评论 -
队列(循环顺序队列、链队列、循环链表队列)
目录一、循环顺序队列1.1 假溢出现象1.2 循环顺序队列 1.3 算法实现1.3.1 初始化队列1.3.2 入队操作 1.3.3 出队操作 1.3.4 读取队头元素 1.3.5 判空操作1.3.6 判满操作 二、链队列2.1 初始化队列2.2 入队操作2.3 出队操作2.4 读取队头元素2.5 判空操作2.6 销毁操作 三、循环链表队列1.3.2 入队操作 1.3.3 出队操作 1.3.4 读取队头元素 1.3.5 判空操作1.3.6 判满操作 二原创 2022-06-15 12:02:14 · 1843 阅读 · 0 评论 -
插入类排序(直接插入排序、折半插入排序、希尔排序)
三、算法性能分析原创 2022-06-16 08:54:40 · 356 阅读 · 0 评论 -
栈(顺序栈、链栈)
栈作为一种限定性线性表,即将线性表的插入和删除操作限制为仅在表的一端进行。通常将表中允许进行插入、删除操作的一端称为栈顶,栈顶的当前位置是动态变化的,它由一个称为栈顶指针的位置指示器来指示;将表的另一端称为栈底。当栈中没有元素时称为空栈;栈的插入操作称为入栈,栈的删除操作称为出栈。......原创 2022-06-22 09:35:16 · 700 阅读 · 0 评论