Algorithm 为什么单链接列表有多个标题是件好事?

Algorithm 为什么单链接列表有多个标题是件好事?,algorithm,linked-list,Algorithm,Linked List,在这篇文章中,rici解释道: 如果删除不重要,可能是因为数据结构 不可变的单链接列表提供了另一个非常有用的特性: 它们允许结构共享。单链接列表可以很好地作为 多个头部的尾部,这对于一个 双链接列表。因此,单链接列表具有 传统上,数据结构是函数式数据库选择的简单数据结构 语言 有多个脑袋怎么可能是一件好事呢?这本来就不是一件好事。这只是惰性复制不可变链表的自然结果 想象一下: LinkedList a = createLinkedList(...); LinkedList b = prepen

在这篇文章中,rici解释道:

如果删除不重要,可能是因为数据结构 不可变的单链接列表提供了另一个非常有用的特性: 它们允许结构共享。单链接列表可以很好地作为 多个头部的尾部,这对于一个 双链接列表。因此,单链接列表具有 传统上,数据结构是函数式数据库选择的简单数据结构 语言


有多个脑袋怎么可能是一件好事呢?

这本来就不是一件好事。这只是惰性复制不可变链表的自然结果

想象一下:

LinkedList a = createLinkedList(...);

LinkedList b = prepend(a, 3.14);

LinkedList c = prepend(a, 2.72);

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

的第一个元素,我想说,如果在代码中有多个尾部部分相同的列表是合理的,然后将它们表示为共享这些尾部的列表是一件好事,因为这样可以节省内存

但是,如果类似的东西对你没有用处,那么这个能力将不会给你任何东西