js数组和链表的区别

JavaScript023

js数组和链表的区别,第1张

唯一的区别是,数组的属性是0-n整数

对象的属性可以是任意字符串

比如有一个数组a=[1,2,3,4],还有一个对象a={0:1,1:2,2:3,3:4},然后你运行alert(a[1]),两种情况下的运行结果是相同的!这就是说,数据集合既可以用数组表示,也可以用对象表示,那么我到底该用哪一种呢?

数组表示有序数据的集合,而对象表示无序数据的集合。如果数据的顺序很重要,就用数组,否则就用对象。

当然,数组和对象的另一个区别是,数组的数据没有”名称”(name),对象的数据有”名称”(name)。

但是问题是,很多编程语言中,都有一种叫做”关联数组”(associative

array)的东西。这种数组中的数据是有名称的。

java数组的应用教程:

常规数组: 数组元素内容是一种类型的元素,如const arr = [1,2,3,4],在存储空间是连续内存的

JS数组: 数组元素内容不是同一种类型的元素,如const arr = ['haha', 1, {a:1}],则在存储上是一段非连续空间。此时,JS 数组不再具有数组的特征,其底层其实是由链表来实现的

总结

链表的插入/删除效率较高,而访问效率较低;

数组的访问效率较高,而插入效率较低

各种数组(例如:字符数组、整数数组等)当然不是循环链表了。循环链表的定义域中,除了有数据域之外,还需要有指针域,该指针必须是指向下一个元素的,以此形成一个循环链表。

我的理解是你说的数组到底是否为循环链表,你可能指的是指针数组。例如如下代码:

void main( )

{

int int_array1[10] /* 定义了一个整型数组,元素个数为 10 个。 下标从 0 到 9。整型数组中的每一个元素都是一个整数 */

int * int_array2[10] /* 定义了一个整型指针数组,元素个数为 10 个,下标从 0 到 9。数组中的每一个元素都是整型指针,这是它和数组 array1 所不同的地方。而且了, 该数组中的每一个整型指针都是独立的,并没有起到指向下一个元素的作用,所以这个就不是循环链表。*/

}

关于链表、二叉树的详细内容,你可以参考 C 语言版的数据结构教材。这些教材上面肯定都会有详细的讲解、以及每个数据结构实现的伪代码。