易百教程

31、如何解释链表和数组是什么?

数组是一种数据类型,在几乎所有现代编程语言中都被广泛实现为默认类型。它用于存储类似类型的数据。
但是有很多用例我们不知道要存储的数据量。对于这种情况,需要高级数据结构,其中一种数据结构是链表。
有几点可以解释链表与数组的不同之处:

数组 链表
数组是一组具有相似数据类型的元素。 链表是一组有序的相同类型的元素,它们使用指针连接。
元素连续存储在内存中。 新元素可以存储在内存中的任何位置。
数组支持随机访问。这意味着可以使用它们的索引值直接访问元素,例如 arr[0] 用于第 1 个元素,arr[5] 用于第 6 个元素等。访问数组中的元素很快,时间复杂度为 O(1)。 链表支持顺序访问。这意味着我们必须遍历完整的链表,直到该元素依次访问链表中的哪个元素/节点。
要访问链表的第 n 个元素,时间复杂度为 O(n)。一旦声明数组,就会在编译时分配内存。它被称为静态内存分配。 内存是在运行时分配的,每当添加一个新节点时。它被称为动态内存分配。
插入和删除操作在数组中需要更多时间,因为内存位置是连续且固定的。 在链表的情况下,新元素存储在第一个可用的内存位置。插入和删除操作在链表中很快。
数组的大小必须在数组声明时声明。 链表的大小是可变的。每当向其中添加节点时,它都会在运行时增长。