Ahm*_*ssa 1 c arrays pointers linked-list data-structures
当我在我的简单虚拟机中处理某些链表数据结构时,这个问题突然浮现在脑海中,那么为什么我们需要在数据结构本身中存储指向下一个元素的指针,如下所示:
struct Name
{
int element1;
float element2;
void *nextItem;
};
Run Code Online (Sandbox Code Playgroud)
为什么不存储指向数组中下一项的指针,以便我们可以直接访问任何节点?我们可以创建一个链接的数组列表,以确保我们在列表中添加新项目具有类似的灵活性,例如:
struct Name
{
int element1;
float element2;
};
struct arrayOfpointers
{
void *Items[FIXED_SIZE];
void *nextArray;
};
Run Code Online (Sandbox Code Playgroud)
其中arrayOfpointers-> Items [1]是指向Name数据结构的第二个元素的指针?这种技术到达链表的具体项目比普通项目快得多吗?
为什么不将指针存储到数组中的下一个项目,以便我们可以直接访问任何节点?
因为这会将链表数据结构转换为数组.
从本质上讲,这将使您的数据结构以多种不同的方式运行:
如果您的系统可以使用O(n)插入和删除的数据结构,则可以使用数组:
struct Name {
int element1;
float element2;
} nameArray[FIXED_SIZE];
Run Code Online (Sandbox Code Playgroud)
不需要next链接,因为数据将按顺序位于存储器中