我有问题是否有可能这样做?
有一个人对我说我可以这样做:
struct Node
{
int data;
int NextIndex;
}
但我不确定我是否应该使用指针。
答案 0 :(得分:3)
我已经做了很多次(我在嵌入式系统中工作,所以我使用这样的技巧)。使用索引的优点是索引使用的内存少于指针(通常是uint8_t或uint16_t),因此如果需要关注内存,则可以这样做。
在这种情况下,您只能使用单个数组(因为索引必须与之相对)。因为您没有进行动态分配,所以在这种情况下,插入和删除非常快。请注意,您也可以在数组中使用指针,如果您正在优化时间,那么这甚至比索引更快(在大多数架构上我都在使用)。
就使用下一个指针而言,你分配一个大数组,并创建一个指向第一个元素的free
头,然后使所有元素指向下一个,所以基本上你有一个免费的 - 连接列表。如果要使用元素,可以从空闲列表中弹出元素,然后将其推送到要使用的新列表中。释放元素时,只需将其推回到空闲列表中即可。