有向图实现

本文介绍了如何使用Java来实现有向图数据结构,包括相关的基础知识和具体的代码实现。
摘要由CSDN通过智能技术生成

1.知识储备:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
2.代码实现:

package Graph;

import Queue.Queue;

public class DiGraph {
	//顶点数目
   private final int V;
   //边的数目
   private int E;
   //邻接表
   private Queue<Integer>[] adj;
   
   public DiGraph(int V){
	   //初始化顶点数量
	   this.V=V;
	   //初始化边的数量,默认等于0
	   this.E=0;
	   //初始化邻接表
	   this.adj=new Queue[V];
	   //让每个索引处存储空队列
	   for(int i=0;i<=adj.length;i++){
		   adj[i]=new Queue<Integer>();
	   }
   }
   
   //获取顶点数目
   public int V(){
	   return V;
   }
   
   //获取边的数目
   public int E(){
	   return E;
   }
   
   //向有向图中添加一条边 v->w
   public void addEdge(int v,int w){
	   //只需要让顶点w出现在顶点v的邻接表中,因为这是有方向的,最终,顶点v的邻接表中存储的相邻的顶点的含义是:v->其它顶点
	   adj[v].equals(w);
	   //边的数量+1
	   E++;
   }
   
   //获取由v指出的边所连接的所有顶点
   public Queue<Integer> adj(int v){
	   return adj[v];
   }
   
   //改图的反向图
   private DiGraph reverse(){
	   //创建有向图对象
	   DiGraph r=new DiGraph(V);
	   for(int v=0;v<V;v++){
		   //获取由该顶点v指出的所有边
		   for(Integer w: adj[v]){
			   //原图中表示的是由v->w的边
			   //给他反过来指向
			   r.addEdge(w,v);
		   }
	   }
	   return r ;
   }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值