【问题标题】:what's the advantages of using the data structure of static linked list使用静态链表的数据结构有什么好处
【发布时间】:2018-12-27 20:20:22
【问题描述】:

本题中,静态链表定义如下:(c++代码)

template<typename T> struct Node{
    T elem;
    int next;//yes, int, which points to the index of the next element in the array.
};
Node static_linked_list [SOME_SIZE];
//some initialization code omitted.

所以在这种链表中,它是静态的,因为它的大小是在数组初始化期间分配的。链接是通过字段int next 实现的,该字段指向下一个元素的索引。

与基于指针(或引用)的链表相比,这种数据结构有什么优势?它的应用是什么?据我所知,静态的有作用域生命周期,可以在实现malloc 时使用。但是它的int next 的内存消耗似乎并不比指针少。

【问题讨论】:

    标签: data-structures linked-list


    【解决方案1】:

    我不确定这个特殊结构的用途,但这种不寻常的技术确实提供了在使用有上限和固定、预分配内存块时表现得像链表的能力除了根据需要更新元素中的索引之外,不需要对其进行管理。 (请注意,索引字段当然没有“指向”下一个数字索引,它可以指向任何索引,因此“列表”没有需要按语义顺序存储。)

    “删除”一个项目比一个简单的数组更快(这需要移动后面的元素)。添加项目比较棘手,显然受整个元素数组大小的限制,但可以通过一些旁观的簿记来加快速度。我不确定在什么情况下您会决定在不同类型的列表上需要这种特定的数据结构。我的猜测是,在可预测性为王的情况下,您会受到相当谨慎的内存限制:想想游戏机、嵌入式设备、驱动程序/操作系统层等。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-01-27
      • 1970-01-01
      • 1970-01-01
      • 2011-07-12
      • 2019-10-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多