关注
逻辑上来说两者都属于线性表。
物理上来说,即在内存两种逻辑结构所对应的物理存储分布,数组占用一块连续的内存区,而链表在内存上是不连续的。因此需要一个东西将各个元素串起来,这个串起来的额外操作是通过一个节点指向下一个节点的指针实现的,即对于链表来说每个节点除了要存储对应的元素(数据域),还需存储指向下一个节点的指针(指针域),因此对于链表来说,存储一个节点,相比于数组所要消耗的资源更多。也正因为这种物理结构的差异,使得两者在访问、增加、删除节点这三种操作上所带来的时间复杂度不同。
数组可以使用下标在O(1)的复杂度下访问元素。链表没有下标的概念,只能通过头节点指针,从每一个节点,依次往下找,复杂度为O(n)。
增加元素,由于要保持数组内存的连续性,在所插入位置之后的所有元素都需要依次后移,复杂度为O(n),而链表增加元素只需要改变增加位置前一个节点的指针指向,即可以实现增加,复杂度O(1)。
删除类似于增加,数组中所删除元素之后的元素都需要依次前移,链表也只需改变删除节点前一个节点的指针指向即可,两这复杂度分别为O(n)与O(1)。
综上来说,数组适用于读操作(查询)更多的场景,链表适用于写操作(增删)更多的场景。
查看原帖
点赞 评论
相关推荐
点赞 评论 收藏
分享
01-19 12:48
门头沟学院 C++
只想搞钱的鸽子很喜欢...:混账是很多的,还有那些在自己风华正茂的年纪说风凉话讥讽那些下岗前员工的。这些人都是现在职场环境这么烂的帮凶 点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 在大厂上班是一种什么样的体验 #
9584次浏览 123人参与
# 为了减少AI幻觉,你注入过哪些设定? #
3839次浏览 130人参与
# 程序员找工作至少要刷多少题? #
16584次浏览 231人参与
# 机械人避雷的岗位/公司 #
43001次浏览 290人参与
# 我现在比当时_,你想录用我吗 #
8215次浏览 108人参与
# 你认为工作的意义是什么 #
248921次浏览 1497人参与
# 一张图晒一下你的AI员工 #
4638次浏览 111人参与
# 论秋招对个人心气的改变 #
9729次浏览 151人参与
# AI Coding的使用心得 #
4242次浏览 99人参与
# 刚入职的你踩过哪些坑 #
6320次浏览 127人参与
# 关于春招/暑期实习,你想知道哪些信息? #
6916次浏览 116人参与
# 牛客AI体验站 #
6077次浏览 167人参与
# 晒晒你司的新年福利 #
7660次浏览 100人参与
# 12306一秒售罄,你抢到回家的票了吗? #
1756次浏览 46人参与
# 总结:哪家公司面试体验感最差 #
92801次浏览 429人参与
# 程序员能干到多少岁? #
8063次浏览 113人参与
# 你认为小厂实习有用吗? #
117880次浏览 679人参与
# 互联网公司评价 #
485335次浏览 4109人参与
# 应届生进小公司有什么影响吗 #
118139次浏览 1158人参与
# 你的实习什么时候入职 #
341760次浏览 2270人参与