单向链表是动态数组吗
Is A Singly Linked List a Dynamic Array
我试图在考试前更好地理解我的定义,其中一些问题将包含术语“动态数组”。因此,我害怕在这些情况下使用单向链表,因为它们提供了简单解释且节省时间的堆栈实现,但可能不被视为动态数组。
支持和反对单链表是动态数组的论点是什么?
据我了解,动态数组只是一个根据其中的元素分配一些动态数量 space 的数组。在这种情况下,链表的大小对应于其中的元素1:1;因此动态。
另一方面,我的老师使用过的例子以及我们教科书中的例子,动态数组是连续数组——或者更确切地说;数组被定义为连续序列。即 array[i] 是第 i 个元素,array[i+1] 是第 i+1 个元素(如果 f.ex 我们对数组排序)。但是单向链表的类似实现(键和 next 的两个数组)不遵循这种排序方案;因此不是数组。
因此我在笔记中得出以下结论;单向链表是动态的,但数组不是。因此不是动态数组。
我这个假设正确吗?你的论据是什么 for/against?
数组通常意味着可以直接寻址的连续内存。获取i-th
元素的值,无论i
是大还是小,数组大小是大还是小,都应该是常量。
在这个定义下,链表是动态的,但不是数组。
Is A Singly Linked List a Dynamic Array
不,数组(动态或非动态)允许在恒定时间内进行随机访问。对于链表,您必须遍历列表才能找到给定索引的值。
Arrays are defined as being contiguous sequences
这通常是这样解释的,但是当内存管理是一个黑盒子时,您可以认为数组不一定是连续的。这可以被认为是一个实现细节。例如,在 JavaScript 中,数组不能保证是连续的。重要的是数组提供了对给定索引处元素的直接访问,并且是在常数时间内进行的。
Singly linked lists are dynamic, but not arrays
这是正确的结论。
我试图在考试前更好地理解我的定义,其中一些问题将包含术语“动态数组”。因此,我害怕在这些情况下使用单向链表,因为它们提供了简单解释且节省时间的堆栈实现,但可能不被视为动态数组。
支持和反对单链表是动态数组的论点是什么?
据我了解,动态数组只是一个根据其中的元素分配一些动态数量 space 的数组。在这种情况下,链表的大小对应于其中的元素1:1;因此动态。
另一方面,我的老师使用过的例子以及我们教科书中的例子,动态数组是连续数组——或者更确切地说;数组被定义为连续序列。即 array[i] 是第 i 个元素,array[i+1] 是第 i+1 个元素(如果 f.ex 我们对数组排序)。但是单向链表的类似实现(键和 next 的两个数组)不遵循这种排序方案;因此不是数组。
因此我在笔记中得出以下结论;单向链表是动态的,但数组不是。因此不是动态数组。
我这个假设正确吗?你的论据是什么 for/against?
数组通常意味着可以直接寻址的连续内存。获取i-th
元素的值,无论i
是大还是小,数组大小是大还是小,都应该是常量。
在这个定义下,链表是动态的,但不是数组。
Is A Singly Linked List a Dynamic Array
不,数组(动态或非动态)允许在恒定时间内进行随机访问。对于链表,您必须遍历列表才能找到给定索引的值。
Arrays are defined as being contiguous sequences
这通常是这样解释的,但是当内存管理是一个黑盒子时,您可以认为数组不一定是连续的。这可以被认为是一个实现细节。例如,在 JavaScript 中,数组不能保证是连续的。重要的是数组提供了对给定索引处元素的直接访问,并且是在常数时间内进行的。
Singly linked lists are dynamic, but not arrays
这是正确的结论。