Data structures 什么';s使用静态链表数据结构的优点

Data structures 什么';s使用静态链表数据结构的优点,data-structures,linked-list,Data Structures,Linked List,在这个问题中,静态链表定义如下:(c++代码) 模板结构节点{ 元素; int next;//是,int,它指向数组中下一个元素的索引。 }; 节点静态链接列表[某些大小]; //省略了一些初始化代码。 所以在这种链表中,它是静态的,因为它的大小是在数组初始化期间分配的。链接通过字段int next实现,该字段指向下一个元素的索引 与基于指针(或引用)的链表相比,这种数据结构有什么优势?它的用途是什么?据我所知,静态的有作用域生存期,可以在实现malloc时使用。但是它的int next的内存

在这个问题中,静态链表定义如下:(c++代码)

模板结构节点{
元素;
int next;//是,int,它指向数组中下一个元素的索引。
};
节点静态链接列表[某些大小];
//省略了一些初始化代码。
所以在这种链表中,它是静态的,因为它的大小是在数组初始化期间分配的。链接通过字段
int next
实现,该字段指向下一个元素的索引


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

我不确定这个特殊的结构是用来做什么的,但是这种不寻常的技术确实提供了一种能力,即在使用封顶和固定,预先分配的内存块,除了根据需要更新元素中的索引外,不需要进行管理。(请注意,索引字段当然不必“指向”下一个数字索引,它可以指向任何索引,因此“列表”不需要按语义顺序存储。)

“删除”一个项目比删除一个简单的数组(需要移动后面的元素)要快。添加项比较复杂,而且明显受到整个元素数组大小的限制,但可以通过一些撇开簿记的方法来加快速度。我不确定在什么具体情况下,您会决定在不同类型的列表上需要这个特定的数据结构。我的猜测是,在可预测性占主导地位的情况下,你将面临相当谨慎的内存限制:想想游戏控制台、嵌入式设备、驱动程序/操作系统层等等

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.