当前位置: 首页 > news >正文

java数据结构----图

图的存储结构:

代码实现

public class Graph {// 标记顶点数目private int V;// 标记边数目private int E;// 邻接表private Queue<Integer>[] adj;public Graph(int v) {V = v;this.E = 0;this.adj = new Queue[v];for (int i = 0; i < adj.length; i++) {adj[i] = new Queue<Integer>();}}public int getV(){return V;}public int getE(){return E;}// 将v和w顶点相连public void addEdge(int v, int w){// 无向图中adj[v].enqueue(w);adj[w].enqueue(v);E++;}// 获取v点相连的点public Queue<Integer> adj(int v){return adj[v];}
}

图的搜索

深度优先搜索

广度优先搜索

路径查找

有向图

拓扑排序

检测有向图中的环

顶点排序

加权无向图

public class EdgeWeightedGraph {private final int V;private int E;private Queue<Edge>[] adj;public EdgeWeightedGraph(int v) {V = v;E = 0;adj = new Queue[v];for (int i = 0; i < adj.length; i++) {adj[i] = new Queue<>();}}public int getV(){return V;}public int getE(){return E;}public void addEdge(Edge edge){int v = edge.either();int w = edge.other(v);adj[v].enqueue(edge);adj[w].enqueue(edge);E++;}public Queue<Edge> adj(int v){return adj[v];}public Queue<Edge> edges() throws InterruptedException {Queue<Edge> res = new Queue<>();for (int i = 0; i < adj.length; i++) {while (!adj[i].isEmpty()){Edge edge = adj[i].dequeue();int other = edge.other(i);if (other > i){res.enqueue(edge);}}}return res;}class Edge implements Comparable<Edge>{private int v;private int w;private double weight;public Edge(int v, int w, double weight) {this.v = v;this.w = w;this.weight = weight;}public double getWeight(){return weight;}public int either(){return v;}public int other(int a){return a == v ? w : v;}@Overridepublic int compareTo(Edge o) {double cmp =  this.weight - o.weight;if (cmp > 0){return 1;}else if (cmp< 0){return -1;}else {return 0;}}}
}

最小生成树

贪心算法

prim算法

kruskal算法

加权有向图

加权有向边

加权有向图

最短路径树

内容来源于184_最短路径_Dijkstra算法实现1_哔哩哔哩_bilibili

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 清华大佬自曝:接到了省烟草局的offer,我就拒掉了华为!结果华为立马给我申请了特殊涨薪,总包70w是烟草的2倍,这可如何是好?
  • SpringBoot+vue集成sm国密加密解密
  • AI学习指南深度学习篇-RMSprop的数学原理
  • 【mechine learning-十-梯度下降-学习率】
  • 微软九月补丁星期二发现了 79 个漏洞
  • k8s 资源管理
  • Git常用命令(记录)
  • 怎么浏览URL的PDF文件呢
  • ip映射域名,一般用于mysql和redis的固定映射,方便快捷打包
  • Python实现 Socket.IO 的在线游戏场景
  • Oracle临时表
  • Android自动化1️⃣环境搭建【基于Appium】-基于python
  • Redis搭建集群
  • Leetcode 每日一题:Longest Increasing Path in a Matrix
  • 中医笔记目录
  • 【译】React性能工程(下) -- 深入研究React性能调试
  • Akka系列(七):Actor持久化之Akka persistence
  • JavaScript新鲜事·第5期
  • 编写符合Python风格的对象
  • 从0实现一个tiny react(三)生命周期
  • 基于遗传算法的优化问题求解
  • 聊聊flink的BlobWriter
  • 判断客户端类型,Android,iOS,PC
  • 前端每日实战:61# 视频演示如何用纯 CSS 创作一只咖啡壶
  • 浅谈JavaScript的面向对象和它的封装、继承、多态
  • 手机端车牌号码键盘的vue组件
  • const的用法,特别是用在函数前面与后面的区别
  • 回归生活:清理微信公众号
  • ​【C语言】长篇详解,字符系列篇3-----strstr,strtok,strerror字符串函数的使用【图文详解​】
  • ​ssh-keyscan命令--Linux命令应用大词典729个命令解读
  • ​zookeeper集群配置与启动
  • ###51单片机学习(2)-----如何通过C语言运用延时函数设计LED流水灯
  • (Matalb分类预测)GA-BP遗传算法优化BP神经网络的多维分类预测
  • (Mirage系列之二)VMware Horizon Mirage的经典用户用例及真实案例分析
  • (第27天)Oracle 数据泵转换分区表
  • (分布式缓存)Redis持久化
  • (附源码)ssm户外用品商城 毕业设计 112346
  • (附源码)ssm学生管理系统 毕业设计 141543
  • (三)c52学习之旅-点亮LED灯
  • (三)终结任务
  • (心得)获取一个数二进制序列中所有的偶数位和奇数位, 分别输出二进制序列。
  • (一) springboot详细介绍
  • (原创)攻击方式学习之(4) - 拒绝服务(DOS/DDOS/DRDOS)
  • (原創) 如何優化ThinkPad X61開機速度? (NB) (ThinkPad) (X61) (OS) (Windows)
  • (转)大型网站架构演变和知识体系
  • **《Linux/Unix系统编程手册》读书笔记24章**
  • *算法训练(leetcode)第四十五天 | 101. 孤岛的总面积、102. 沉没孤岛、103. 水流问题、104. 建造最大岛屿
  • .naturalWidth 和naturalHeight属性,
  • .NET 4.0中的泛型协变和反变
  • .NET Core 将实体类转换为 SQL(ORM 映射)
  • .NET delegate 委托 、 Event 事件
  • .NET Framework 的 bug?try-catch-when 中如果 when 语句抛出异常,程序将彻底崩溃
  • .NET MAUI Sqlite程序应用-数据库配置(一)
  • .NET 回调、接口回调、 委托
  • .NET:自动将请求参数绑定到ASPX、ASHX和MVC(菜鸟必看)