当前位置: 首页 > 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


http://www.mrgr.cn/news/28130.html

相关文章:

  • 优化C++设计模式:用模板代替虚函数与多态机制
  • 博睿数据登顶中国应用性能管理及可观测性APMO市场份额第一!
  • 单片机智能家居火灾环境安全检测
  • FastAPI 中间件详解:实现高性能 Web 应用的完整指南和实际案例
  • 【数据结构 | C++】整型关键字的平方探测法散列
  • Python_爬虫3_Requests库网络爬虫实战(5个实例)
  • 【Kubernetes】常见面试题汇总(十九)
  • C++第五十一弹---IO流实战:高效文件读写与格式化输出
  • 数据结构之基数排序简介与举例
  • 图像增强技术分析
  • aspcms webshell漏洞复现
  • 卡拉兹(Callatz)猜想也叫(3n+1)猜想
  • 【数据结构】排序算法---希尔排序
  • 第T11周:优化器对比实验
  • Vue基础
  • 【C++】深入理解作用域和命名空间:从基础到进阶详解
  • 深入浅出Java匿名内部类:用法详解与实例演示
  • 有了数据中台,是否需要升级到数据飞轮?怎么做才能升级到数据飞轮?
  • 包装盒型自动生成插件 Origami Boxshot illustrator盒型自动生成插件
  • 北大对齐团队独家解读:OpenAI o1开启「后训练」时代强化学习新范式
  • SpringCloud-05 Resilience4J 服务降级和熔断
  • 汽车英文单词缩写汇总
  • 【Multi-UAV】多无人机实现凸多边形区域覆盖--Voronoi分割
  • 进程状态、进程创建和进程分类
  • 使用合成数据进行自我提升的扩散模型
  • 【AI视频】复刻抖音爆款AI数字人作品初体验