Java 邻接列表图的实现:顶点的关联是否需要单独的对象?

Java 邻接列表图的实现:顶点的关联是否需要单独的对象?,java,data-structures,graph-theory,abstract-data-type,Java,Data Structures,Graph Theory,Abstract Data Type,在Goodrich和Tamassia的教科书:Java中的数据结构和算法中,图形ADT的邻接列表结构实现如下图所示: 在顶点u对象中参照包含顶点u的关联边列表的关联对象Iu。图中的每个顶点都是这样 我的问题是,在这个ADT的Java实现中,单独的事件对象Iu有什么意义 为什么不能将入射边存储在顶点对象的字段中?我看不出这会有什么问题,而且肯定会简化实现 为什么不能将入射边存储在顶点对象的字段中 他们可以,但这两种方式都不会有特别大的区别。可能存在一些限制性的实现,例如,当您有一个作为顶点的基本体

在Goodrich和Tamassia的教科书:Java中的数据结构和算法中,图形ADT的邻接列表结构实现如下图所示:

在顶点u对象中参照包含顶点u的关联边列表的关联对象Iu。图中的每个顶点都是这样

我的问题是,在这个ADT的Java实现中,单独的事件对象Iu有什么意义

为什么不能将入射边存储在顶点对象的字段中?我看不出这会有什么问题,而且肯定会简化实现

为什么不能将入射边存储在顶点对象的字段中

他们可以,但这两种方式都不会有特别大的区别。可能存在一些限制性的实现,例如,当您有一个作为顶点的基本体数组,或者顶点仅由索引表示,即没有顶点对象时,可以这样做,以便在不需要对象的情况下高效地使用内存,例如,在这种情况下,您需要将关联对象放在其他位置


假设作者没有在书中的其他地方说,我无法确定作者的实际意思-我没有检查,但从顶点到事件对象的箭头完全可能意味着顶点类包含对事件对象的引用,即有一个成员是事件对象,也就是说,图像已经代表了您认为它应该工作的方式。

是的,这是可能的,但不是邻接列表实现。 此实现的一个问题是,当将新边插入到空图中时,它不会将终端顶点添加到V。insertEdge方法应该调用insertVertex,或者在调用insertEdge之前,需要调用insertVertex