摘要:
一:定义 二:弗洛伊德的使用介绍 下面我们使用一个有三个顶点的图来进行讲解: (1)我们先定义两个二维数组D0[3][3]和P0[3][3] (2)处理两个数组 注意(重点): 初始化 处理后 三:弗洛伊德基本思想 核心思想是: D1[v][w] = min{D0[v][k] + D0[k][w], 阅读全文
摘要:
一:最短路径问题 (一)定义 在网络中,求两个不同顶点之间的所有路径中,边的权值之和最小的那条路径 1.这条路径就是两点之间的最短路径 2.第一个顶点为源点 3.最后一个顶点终点 (二)分类 单源最短路径 >有权,无权 >有向,无向 从某固定源点触发,求其到所有其他顶点的最短路径 多源最短路径 求任 阅读全文
摘要:
一:回顾普里姆算法 数据结构(五)图 最小生成树(普里姆算法) 二:克鲁斯卡尔算法(稀疏图) 推文:https://www.cnblogs.com/qianbixin/p/5005161.html(转载自) 注意: (一)基本思想 或者 (二)难点 (三)解决思路 推文:数据结构(四)树 集合的表示 阅读全文
摘要:
一:集合运算 二:并查集 (一)集合并 (二)查某元素属于什么集合 S1={1,2,4,7} S2={3,5,8} S3={6,9,10} 三:查找(根)的实现 #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h 阅读全文
摘要:
一:最小生成树 (一)定义 我们把构造连通网的最小代价生成树称为最小生成树或给定一个带权的无向连通图,如何选取一棵生成树,使树上所有边上权的总和为最小,这叫最小生成树. (二)什么是最小生成树? 1.是一棵树 1)无回路 2)N个顶点,一定有N-1条边 2.是生成树 1)包含全部顶点 2)N-1条边 阅读全文
摘要:
一:深度优先遍历(邻接矩阵实现) (一)定义 (二)实现思路 (三)递归实现伪代码 (四)非递归实现伪代码 (五)代码实现(递归+非递归) 头文件 #pragma once #ifndef _STACK_H #define _STACK_H #include <stdio.h> #include < 阅读全文
摘要:
一:图的抽象数据类型 二:图的存储结构讨论 三:图的存储结构(1) 邻接矩阵 (一)无向图 (二)有向图 (三)网 (四)实现无向网图创建 四:图的存储结构(2) 邻接表 邻接表处理办法 (一)无向图 (二)有向图 (三)带权值的网图 (四)实现无向网图 注意:上面的两种存储结构是针对顶点,下面的三 阅读全文
摘要:
一:图的定义 顶点: 边: 二:有向图和无向图 无向边: 有向边: 三:简单图 四:无向完全图和有向完全图 无向完全图 有向完全图 五:稀疏图和稠密图 六:网(网络) 七:子图 八:图的顶点和边之间的关系 (一)度 无向图的度 有向图的度 (二)路径 九:连通图 连通图(无向图) 连通分量 强连通图 阅读全文
摘要:
哈夫曼树 (一)定义 带权路径长度WPL: 哈夫曼树(最优二叉树): (二)构造 (三)哈夫曼树特点 1.没有度为1的结点 2.n个叶子节点的哈夫曼树共有2n-1个结点 3.哈夫曼树任意非叶结点的左右子树交换后还是哈夫曼树 4.对同一组权值{w1,w2,...,wn},是会存在不同结构的哈夫曼树 哈 阅读全文
摘要:
(一)树转二叉树 步骤 (二)森林转二叉树 步骤 (三)二叉树转换为树 步骤 (四)二叉树转森林 步骤 (五)树的遍历 法一:先根遍历 法二:后根遍历 (六)森林的遍历 法一:前序遍历 法二:后序遍历 (七)总结 (八)代码实现:创建树,实现树转换二叉树,利用二叉树打印出树的结果 注:森林可以由树的 阅读全文