数组和链表有什么区别

目录:

Anonim

主要区别 数组和链表之间是 数组在编译时分配内存,也就是声明数组的时候,而链表在运行时分配内存,也就是向链表添加元素的时候。

数组是包含一组相同数据类型元素的数据结构。数组是预定义的。换句话说,它具有固定的长度。另一方面,链表是一种线性数据结构,将每个元素视为一个单独的对象。它具有动态长度。因此,可以在运行时增加或减少它。

数组、链表

什么是数组

数组是具有固定大小的数据结构。它可以存储相同类型的元素。当有多个相同类型的元素时,不可能将每个元素都存储为单独的变量。数组为这个问题提供了一个替代方案。它将所有元素存储为单个元素。比如双薪[10];声明一个名为salary 的数组,可以存储10 个double 值。此数组大小为 10。因此,程序员不能在此数组中存储超过 10 个元素。

指数 1英石 数组中的元素为 0。如果数组中有 10 个元素,则最后一个元素的索引为 9。数组中的所有元素都在连续的内存位置。最低地址对应第一个元素,最高地址对应最后一个元素。此外,还可以执行插入、删除、修改元素、遍历数组和合并数组等操作。

什么是链表

链表是一种线性数据结构,它包含一组按顺序排列的节点。每个节点由它自己的数据和另一个节点的地址组成。它可以存储下一个节点的地址,或者下一个节点和上一个节点的地址。元素连接在一起并形成类似于链的结构。链表的主要优点是它是动态的。与数组不同,最初不需要分配所有需要的内存。相反,链表允许在需要时分配内存。

另一方面,链表需要更多内存,因为它存储其他节点的地址。在链表中,不可能一次随机访问一个元素。程序员应该依次遍历每个节点以访问特定元素。此外,在链表中很难进行反向遍历。

数组和链表的区别

定义

数组是一种数据结构,由元素集合组成,每个元素由数组索引标识,而链表是数据元素的线性集合,其顺序不是由它们在内存中的位置给出的。因此,这是数组和链表之间的主要区别。

访问元素

数组支持随机访问。因此,程序员可以使用索引直接访问数组中的元素。链表支持顺序访问。因此,程序员必须依次遍历每个元素或节点,直到到达所需的元素。因此,这是数组和链表之间的一个重要区别。

内存位置

内存位置是数组和链表之间的另一个区别。数组中的元素存储在连续的内存位置。另一方面,链表中的元素可以存储在内存中的任何位置。没有必要将元素存储在连续的内存位置。

尺寸

内存分配

此外,在数组中,内存分配发生在编译时。它是静态内存分配。然而,在链表中,内存分配发生在运行时。它是动态内存分配。因此,这是数组和链表之间的另一个区别。

元素之间的依赖

此外,数组中的元素彼此独立,而链表中的元素或节点指向下一个节点或下一个节点和上一个节点。

结论

数组和链表都有助于线性存储数据。 Array 和 Linked List 的主要区别在于,Array 在编译时分配内存,也就是声明数组的时候,而 Linked List 在运行时分配内存,也就是向链表添加元素的时候。

参考:

1. “链表介绍”。计算机网络中的网络拓扑类型 |今晚学习,可在此处获得。 2. 计算机网络中的网络拓扑类型 |今晚学习,可在此处获得。

图片提供:

1. “Array2”作者未提供机器可读作者。 Jarkko Piiroinen 假设(基于版权声明)。 – 没有提供机器可读的来源。自己的作品(基于版权声明)(公共领域)通过 Commons Wikimedia 2.“CPT-LinkedLists-addingnode”,作者:Singly_linked_list_insert_after.png:Derrick Coetzeederivative 作品:Pluke(谈话) – Singly_linked_list_insert_after.png(公共领域)通过 Commons Wikimedia

数组和链表有什么区别