前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >有向图----有向图的实现

有向图----有向图的实现

作者头像
SuperHeroes
发布2018-05-30 17:46:28
1.4K0
发布2018-05-30 17:46:28
举报
文章被收录于专栏:云霄雨霁云霄雨霁

术语定义:

  • 一个顶点的出度为由该顶点指出的边的总数
  • 一个顶点的入度为指向该顶点的边的总数
  • 一条有向边的第一个顶点称为它的头,第二个顶点称为它的尾

数据结构:

使用邻接表来表示有向图,其中v->w表示为顶点v对应的邻接链表中包含一个w顶点。

有向图API:

public class Digraph Digraph(int V)        创建一个含有V个顶点但不含有边的有向图 int V()        顶点数 int E()        边数 void addEdge(int v,int w)        向图中添加一条边v--w Iterable<Integer> adj(int v)           由v指出的边所连接的所有顶点 Digraph reverse()        该图的反向图 String toString()        对象的字符串表示

实现:

代码语言:javascript
复制
public class Digraph {
	private int V;//顶点数
	private int E;//边数
	private Bag<Integer>[] adj;//邻接表
	public Digraph(int V) {
		this.V = V;
		adj = (Bag<Integer>[]) new Bag[V];
		for(int i=0;i<adj.length;i++)
			adj[i] = new Bag<Integer>();
	}

	public int V() {return V;}
	public int E() {return E;}
	public void addEdge(int v,int w) 
    { adj[v].add(w);	E++;}
    //顶点v所关联的所有顶点
	public Iterable<Integer> adj(int v){return adj[v];}
    //有向图的反转
	public Digraph reverse() {
		Digraph R = new Digraph(V);
		for(int v=0; v<V;v++) 
			for(int w : adj(v))
				R.addEdge(w, v);
		return R;
	}
}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017.12.20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档