我的上一个 CLRS 问题取得了成功,这是另一个:
在《算法导论》,第二版,p。501-502,描述了不相交集的链表表示,其中每个列表成员维护以下三个字段:
- 集合成员
- 指向
next
对象的指针 - 指向第一个对象(集合
representative
)的指针。
尽管链表可以通过仅使用一个“链接”对象类型来实现,但教科书显示了一个辅助“链表”对象,其中包含指向“头”链接和“尾”链接的指针。拥有指向“尾部”的指针有助于Union(x, y)
操作,因此无需遍历较大集合x
中的所有链接即可开始将较小集合的链接附加y
到它。
但是,为了获得对尾链接的引用,似乎每个链接对象都需要维护第四个字段:对 Linked List 辅助对象本身的引用。在这种情况下,为什么不完全删除 Linked List 对象并使用第四个字段直接指向尾部呢?
你会认为这是文本中的遗漏吗?