package runoob.graph ;import java.util.Vector ;
/
* 邻接表
*/
public class
SparseGraph
{// 节点数
private int
n
;// 边数
private int
m
;// 是否为有向图
private boolean
directed
;// 图的具体数据
private
Vector
<Integer
> [ ]g
;// 构造函数
public
SparseGraph
( intn ,
booleandirected
) {assert
n
>= 0 ;this
.
n =n
;this
.
m = 0 ;
this
. java图论基础
directed =directed
;// g初始化为n个空的vector, 表示每一个g[i]都为空, 即没有任和边
g
= (Vector
<Integer
> [ ] ) new Vector [n
] ;for ( int
i
= 0 ;i
<n
;i
++ )g
[i
] = newVector
<Integer
> ( ) ;}
// 返回节点个数
public int
V
( ) { returnn
; }// 返回边的个数
public int
E
( ) { returnm
; }// 向图中添加一个边
public void
addEdge
( intv,
intw
) {assert
v
>= 0 &&v
<n
;assert
w
>= 0 &&w
<n
;g
[v
].
add (w
) ;if (
v
!=w
&& !directed
)g
[w
].
add (v
) ;m
++;}
// 验证图中是否有从v到w的边
boolean
hasEdge
( intv ,
intw
) {assert
v
>= 0 &&v
<n
;assert
w
>= 0 &&w
<n
;for ( int
i
= 0 ;i
<g
[v
].
size ( ) ;i
++ )if (
g
[v
].
elementAt (i
) ==w
)return true ;
return false ;
}
}
版权声明:
本文来源网络,所有图片文章版权属于原作者,如有侵权,联系删除。
本文网址:https://www.bianchenghao6.com/h6javajc/1171.html