关注
逻辑上来说两者都属于线性表。
物理上来说,即在内存两种逻辑结构所对应的物理存储分布,数组占用一块连续的内存区,而链表在内存上是不连续的。因此需要一个东西将各个元素串起来,这个串起来的额外操作是通过一个节点指向下一个节点的指针实现的,即对于链表来说每个节点除了要存储对应的元素(数据域),还需存储指向下一个节点的指针(指针域),因此对于链表来说,存储一个节点,相比于数组所要消耗的资源更多。也正因为这种物理结构的差异,使得两者在访问、增加、删除节点这三种操作上所带来的时间复杂度不同。
数组可以使用下标在O(1)的复杂度下访问元素。链表没有下标的概念,只能通过头节点指针,从每一个节点,依次往下找,复杂度为O(n)。
增加元素,由于要保持数组内存的连续性,在所插入位置之后的所有元素都需要依次后移,复杂度为O(n),而链表增加元素只需要改变增加位置前一个节点的指针指向,即可以实现增加,复杂度O(1)。
删除类似于增加,数组中所删除元素之后的元素都需要依次前移,链表也只需改变删除节点前一个节点的指针指向即可,两这复杂度分别为O(n)与O(1)。
综上来说,数组适用于读操作(查询)更多的场景,链表适用于写操作(增删)更多的场景。
查看原帖
点赞 评论
相关推荐
点赞 评论 收藏
分享
点赞 评论 收藏
分享
点赞 评论 收藏
分享
点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 父母问你工作找得怎么样,怎么回 #
8542次浏览 122人参与
# 面试被问期望薪资时该如何回答 #
389621次浏览 2176人参与
# 厦门银行科技岗值不值得投 #
19677次浏览 427人参与
# 哪些公司面试还在问八股? #
4063次浏览 44人参与
# 想从事Agent应该学习哪些技术? #
1738次浏览 56人参与
# 从投递到OC,你用了多久 #
8674次浏览 74人参与
# 你的秋招第一面感觉怎么样 #
146782次浏览 821人参与
# 有哪些公司在面试时考察AICoding? #
3177次浏览 44人参与
# 什么人最适合大厂? #
4368次浏览 40人参与
# HR面都在聊什么? #
2943次浏览 43人参与
# AI时代还有必要刷leetcode吗? #
1756次浏览 29人参与
# 你觉得机械有必要实习吗 #
82181次浏览 515人参与
# 哪一刻你突然觉得实习“有点值了” #
7013次浏览 54人参与
# kpi面有什么特征 #
106115次浏览 506人参与
# 一人一道大厂面试题 #
133573次浏览 1331人参与
# 硬件人的简历怎么写 #
341284次浏览 3120人参与
# 总结:哪家公司最喜欢泡池子 #
171754次浏览 620人参与
# 稳定和高薪机械人更看重哪个? #
582474次浏览 5568人参与
# 四大天坑是哪四家? #
113825次浏览 246人参与
# 计算机有哪些岗位值得去? #
395340次浏览 2931人参与
# 哪些公司一直卡在简历筛选 #
109941次浏览 384人参与
