数组和链表的区别

数组和链表的区别以及各自的优缺点

1.数组和链表的区别:
(1)数组的元素个数是固定的,而链表的结点个数可按需要增减。
(2)数组元素的存储单元在定义时分配,链表节点的存储单元在执行时动态向系统申请。
(3)数组的元素顺序关系由元素在数组中的位置(即下标)确定,链表中的节点关系由节点所包含的指针来体现。
(4)对于不是固定长度的列表,用可能最大长度的数组来描述,会浪费许多的存储空间。
(5)对于元素的插入、删除操作非常频繁的列表处理场合,用数组表示列表也不是不合适。若用链表实现,会使程序结构清晰,处理的方法也比较简便。
2.数组的特点
(1)在内存中,数组是一块连续的区域。
(2)数组需要预留空间,在使用前要先申请内存的大小,可能会浪费内存空间。
(3)插入数据和删除数据效率低,插入数据时,这个位置后面的数据在内存中要向后移。
(4)随机读取率很高。因为数组是连续的,知道每一个数据的内存地址,可以直接找到给的地址数据。
(5)并不利于扩展,数组定义的空间不够时要重新定义数组。
3.链表的特点
(1)在内存中可以存在如何地方,不要求连续。
(2)每一个数据都保存了下一个数据的内存地址,通过这个地址找到下一个数据。
(3)增删数据很容易。
(4)查找数据时效率低,因为不具有随机访问性。
(5)不指定大小,扩展方便。链表大小不用定义,数据随意增删。
4.数组的优点
(1)随机访问性强。
(2)查找速度快。
5.数据的缺点
(1)插入和删除效率低。
(2)可能会浪费空间。
(3)内存空间要求高,必须有足够的连续内存空间。
(4)数组大小固定,不能动态拓展。
6.链表的优点
(1)插入删除速度快。
(2)内存利用率高,不会浪费内存。
(3)大小没有固定,拓展很灵活。
7.链表的缺点
不能随机查找,必须从第一个开始遍历,查找效率低。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值