图论(2-1) 有向图的实现

图论(2-1) 有向图的实现


在无向图的基础上,稍作修改就可以实现有向图:

1)public void addEdge(int start,int end)

在无向图中要调用2次private void addEdgeToVNodeList(VNodenode,Edge edge),将2个端点的边链表中都加上边,有向图中只需要在一个方向添加


2)public void removeEdge(int start,int end)

同上,只调用一次private void removeEdgeFromVNodeList(VNodenode,Edge edge)


3)public void addVNode(Object element)

没有变化


4)public Object removeVNode(int position)

没有变化


5)public boolean hasEdge(int start,int end)

实现上没有变化 但含义变了,现在两个结点之间有边是有方向的


6)遍历迭代器

实现没有变

View Code




构造下面的有向图测试一下:




广度优先遍历为:
0  2  3  5  7  9  8 
深度优先遍历为:
0  3  9  7  8  2  5 

整个图的广度优先遍历为:
0  2  3  5  7  9  8  1  4  6 
整个图的深度优先遍历为:
0  3  9  7  8  2  5  1  4  6


可以发现,有向图的遍历,当顶点之间不可到达时,遍历不到,就像无向图中不在一个连通域一样

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值