链表和数组的优缺点对比

数组和链表比较

数组优缺点

  • C/C++直接支持
  • 提供随机访问
  • 在编译时确定大小
  • 插入和删除元素费时

链表优缺点

  • 运行时确定大小
  • 快速插入和删除元素
  • 不能随机访问
  • 用户必须提供编程支持

删除和插入元素过程

  • 在数组中插入元素,必须移动其他元素以腾出空位,然后再插入,插入的元素离数组开头越近,要被移动的元素越多。在链表中插入节点却非常简单,只需要给两个指针赋值。
  • 在数组中删除一个元素同样要移动许多相关元素,但是链表删除节点只需要重新设置一个指针并释放被删除节点占用的内存即可。

访问元素

对于数组而言,可以使用数组下标直接访问该数组的任意元素,这叫做随机访问。对于链表而言,必须从链表的首节点开始,逐个节点移动到要访问的节点,这叫做顺序访问。可以先排序,再查找,以提高效率。

总结

选择何种数据类型取决于具体的问题。如果因频繁插入和删除元素导致经常调整大小,而不需要经常查找,选择链表比较好。如果只是偶尔插入或删除项,但是需要经常查找,使用数组更好。
如果需要一种支持频繁插入和删除项又支持频繁查找的数据形式。数组和链表都无法胜任。应选择二叉查找树

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SOC罗三炮

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值