是否可以使用索引创建单个链表但没有指针?

时间:2017-06-30 13:02:57

标签: c++

我有问题是否有可能这样做?

有一个人对我说我可以这样做:

struct Node
{
  int data;
  int NextIndex;
}

但我不确定我是否应该使用指针。

1 个答案:

答案 0 :(得分:3)

我已经做了很多次(我在嵌入式系统中工作,所以我使用这样的技巧)。使用索引的优点是索引使用的内存少于指针(通常是uint8_t或uint16_t),因此如果需要关注内存,则可以这样做。

在这种情况下,您只能使用单个数组(因为索引必须与之相对)。因为您没有进行动态分配,所以在这种情况下,插入和删除非常快。请注意,您也可以在数组中使用指针,如果您正在优化时间,那么这甚至比索引更快(在大多数架构上我都在使用)。

就使用下一个指针而言,你分配一个大数组,并创建一个指向第一个元素的free头,然后使所有元素指向下一个,所以基本上你有一个免费的 - 连接列表。如果要使用元素,可以从空闲列表中弹出元素,然后将其推送到要使用的新列表中。释放元素时,只需将其推回到空闲列表中即可。