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://51itzy.com/kjqy/10703.html