链接列出非连续内存

时间:2014-05-09 18:15:23

标签: java linked-list

我很难从过去的试卷中找到以下问题的答案。我很感激解释。

链接列表使用非连续内存,这是什么意思?

5 个答案:

答案 0 :(得分:0)

非连续意味着链接列表'元素不一定在存储器中的相邻位置。这与使用连续内存的数组或数组列表不同。对于数组和数组列表,连续元素也位于相邻的内存位置。

答案 1 :(得分:0)

这意味着列表中的每个节点都可以在内存中的任何位置。这是将列表与连续存储的数组区分开来的一件事。

答案 2 :(得分:0)

链接列表使用链接,链接指向列表中的下一个元素,这些链接不必在内存中相邻。因此,链表中的每个元素都可以位于任何内存位置,并且使用链接我们可以按顺序遍历列表。而另一侧的数组使用连续的内存块,这意味着所有元素彼此相邻。

答案 3 :(得分:0)

在这种情况下,非连续存储器指的是分配给包括链表的节点的存储器地址不是连续的。将此与传统阵列进行比较,其中每个节点按顺序发生。在带有指针的语言中(至少是C族),您可以通过向表示索引的内存地址添加一个数字来访问数组中的下一个索引,而不是递增索引本身。前面提到的数字是数组中包含的数据类型的字节大小。

返回链接列表和java ...

在Java中,您无法显式访问内存位置,但出于性能原因,基础概念仍然很重要。通过添加指针来增加索引,而不是访问链接列表中需要跳转到下一个节点的内容,可以更快地访问数组中的某些内容。因此,链接列表中索引的访问需要O(n)时间,而数组是O(1)时间。

我希望这至少有点意义。

答案 4 :(得分:0)

链接列表将自身呈现为节点序列,其具有指向列表中下一个(也可能是前一个)节点的成员变量。构造链表时,通常使用第一个Node来构造它,它将是头部。当需要将新元素添加到链表时,首先需要创建它。它在内存中的某个地方创建,可以是堆,也可以是堆栈。并且内存由操作系统分配,并由操作系统分配给我们的内存位置。在创建新节点之后,我们必须分配" next"当前节点到该新节点的信息。

什么是连续的数据结构?一个数组。