为什么单链表的多个头是好事?

时间:2013-12-16 03:19:36

标签: algorithm linked-list

在这篇文章When is doubly linked list more efficient than singly linked list?中,rici解释道:

  

如果删除不重要,可能是因为数据结构是   不可变的单链表提供了另一个非常有用的属性:   他们允许结构共享。一个单链表可以很高兴   多头的尾巴,这是不可能的   双重链表。出于这个原因,单链表有   传统上是功能性选择的简单数据结构   语言。

如何让多个脑袋成为一件好事?

2 个答案:

答案 0 :(得分:3)

这本身并不是一件好事。这只是懒惰复制不可变链表的自然结果。

想象:

LinkedList a = createLinkedList(...);

LinkedList b = prepend(a, 3.14);

LinkedList c = prepend(a, 2.72);

如果内容被懒惰地复制(如果列表是不可变的,这是一个自然的选择),那么bc的第一个元素现在都指向a的第一个元素

答案 1 :(得分:0)

我会说,如果有多个列表,其中部分尾部在代码中是相同的,那么将它们表示为共享这些尾部的列表是一件好事,因为它可以节省内存。

但是,如果这样的事情对你没用,那么这种能力就不会给你任何东西。