数组和链表总结

定义

  • 数组是具有相同数据类型的元素的集合

  • 链表是由链接/指针连接的元素的有序集合

访问方式

  • 在数组中,可以使用索引/下标值来访问元素,即元素可以被随机访问,比如arr[0]、arr[3]等,因此数组提供快速和随机访问。

  • 在链表中,元素不能随机访问,只能按顺序访问,访问元素需要花费O(n)时间

内存结构

  • 在数组中,元素以连续的方式存储在内存中

  • 在链表中,元素可以存储在任何可用的地方,节点的地址存储在以前的节点中

插入&删除

  • 因为元素存储在连续的内存位置,在数组中插入和删除需要更多的时间,每次操作都需要移动元素

  • 插入和删除在链表中是快速和容易的,因为只需要改变指针的值

内存分配

  • 在数组中,在编译时分配内存,即静态内存分配

  • 在链表中,内存在运行时分配,即动态内存分配

类型

  • 数组可以是单维的,二维的或多维的

  • 链表可以是单端链表、双端链表或循环链表

依赖性

  • 在数组中,每个元素都是独立的,与以前的元素或位置无关

  • 在链表中,元素的位置或地址存储在前一个元素/节点的链接部分

额外空间

  • 在数组中,没有使用类似链表的指针,因此不需要内存中的额外空间来存放指针

  • 在链表中,元素之间使用指针或链接来维护,因此使用指针,并且需要额外的内存空间

示例图

  • 数组

输入图片说明

  • 链表

输入图片说明

编译自:Difference between Array and Linked List | Array vs. Linked List

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值