在这篇文章When is doubly linked list more efficient than singly linked list?中,rici解释道:
如果删除不重要,可能是因为数据结构是 不可变的单链表提供了另一个非常有用的属性: 他们允许结构共享。一个单链表可以很高兴 多头的尾巴,这是不可能的 双重链表。出于这个原因,单链表有 传统上是功能性选择的简单数据结构 语言。
如何让多个脑袋成为一件好事?
答案 0 :(得分:3)
这本身并不是一件好事。这只是懒惰复制不可变链表的自然结果。
想象:
LinkedList a = createLinkedList(...);
LinkedList b = prepend(a, 3.14);
LinkedList c = prepend(a, 2.72);
如果内容被懒惰地复制(如果列表是不可变的,这是一个自然的选择),那么b
和c
的第一个元素现在都指向a
的第一个元素
答案 1 :(得分:0)
我会说,如果有多个列表,其中部分尾部在代码中是相同的,那么将它们表示为共享这些尾部的列表是一件好事,因为它可以节省内存。
但是,如果这样的事情对你没用,那么这种能力就不会给你任何东西。