【问题标题】:Why is having multiple heads for a singly-linked list a good thing?为什么单链表有多个头是一件好事?
【发布时间】:2014-01-03 08:54:14
【问题描述】:

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

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

多头怎么可能是好事?

【问题讨论】:

    标签: algorithm linked-list


    【解决方案1】:

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

    想象一下:

    LinkedList a = createLinkedList(...);
    
    LinkedList b = prepend(a, 3.14);
    
    LinkedList c = prepend(a, 2.72);
    

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-06-25
        • 1970-01-01
        • 1970-01-01
        • 2020-08-29
        • 1970-01-01
        • 2016-03-10
        • 1970-01-01
        相关资源
        最近更新 更多