java 关联表做修改_java-图关联列表实现

我知道我也许正在从死里复生一个老问题,但是我觉得应该发表评论.

您可以创建关联列表图形结构,也可以针对图进行调整.

考虑LinkedList< Vertex>.对象和LinkedList< Edge>.宾语.这将使您可以遍历所有边缘和所有顶点,但不包含有关所有对象如何连接的信息.

假设我们添加了几个LinkedList< Connection>对象.实际上,每个顶点一个.连接只是边缘和顶点相交的地方.因此,边缘将具有两个Connection对象(对于无向图),而顶点将具有一个LinkedList< Connection>.对象,表示与它连接的每个Edge的连接.本质上,这是一个事件列表.

如果删除某些Connection对象,则可以修改它以表示有向图.更具体地说,您必须选择在哪些地方没有这些引用.您可以选择从关联的LinkedList< Connection>中删除连接.如果您不希望从顶点看到边缘(对于上面的示例,N2将有一个空的LinkedList< Connection>).您可能改为选择在Edge上使引用成为可选(对于上面的示例,E1将有一个指向N2的连接,而一个Connection为空,从而允许从E1遍历到N2,但不能返回到N1.您选择如何实现一个是更直观的-边缘是定向的,因此删除边缘上的连接以决定它们的连接方式似乎合乎逻辑.另一个可能一开始看起来有些复杂,但会阻止您不必要地跳到进行广度优先和深度优先搜索时无用的边缘.

点形式:

>在发生列表的实现中,我有.您需要实施吗?

>严格来说,您可以只存储传出的边缘.但是,回溯算法可能会受益于能够沿其行进的参考进行回溯.当然,您可以使用某种历史来实现此目的,因此可能不需要考虑太多.

>如果两者都做,则可能需要某种方法来区分它是传入还是传出.是否通过具有两个LinkedList< Connection>顶点上的对象,或者在Connection上具有布尔型pointingToVertex原语,或任何其他方式.也许您的边缘将是有方向的,而无方向的边缘将由两个指向相反方向的边缘组成.根据您的结构需要进行考虑.

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值