开卷数据结构(4)—— 顺序表和链表比较
💟作者简介:大家好,我是Ceylan_,可以叫我CC ❣️
📝个人主页:Ceylan_的博客
🏆博主信息:平凡的大一学生,有着不平凡的梦专栏
- 备战蓝桥杯
- 力扣每日一题
- 开卷数据结构
⚡希望大家多多支持😘一起进步~❤️
🌈若有帮助,还请关注➕点赞➕收藏,不行的话我再努努力💪💪💪
目录
🌺前言
🌺空间性能的比较
🌺时间性能的比较、
🌷存取元素的效率
🌷逻辑结构与物理结构
🌷查找的效率
🌷插入或删除的效率
🌺总结
🌺每日金句
🌺前言
在前文中,我们介绍了顺序表和链表的定义与具体操作,在实际应用中,由于它们各有自己的优缺点,使用哪一种存储结构,应该根据具体问题具体分析,通常从空间和时间两个方向作比较分析。
🌺空间性能的比较
顺序表的存储空间必须提前分配,元素个数受到限制。一但存储空间装满了就不能扩容,若继续添加元素,就会出现内存溢出。若提前分配空间过大,可能导致大量空间被闲置,若提前分配空间过小,可能造成溢出。
链表不需要为其提前分配空间,只要内存空间允许,链表就能无限增加元素。
🌺时间性能的比较、
🌷存取元素的效率
顺序表是由数组实现的,它可以顺序存取,也可以随机存取。
链表是一种顺序存取结构,只能从表头顺序存取元素
🌷逻辑结构与物理结构
采用顺序存储时,逻辑上相邻的元素,对应的物理元素位置也相邻
采用链式存储时,逻辑上相邻的元素,物理存储位置不一定相邻,对应的逻辑关系是由指针链接来表示的
🌷查找的效率
对于按值找,两者的时间复杂度都为O(n)
对于按序号查找,顺序表可以随机访问,时间复杂度仅为O(1),链表的时间复杂度为O(n)
🌷插入或删除的效率
对于顺序表,进行插入或删除时,要移动后方大量的元素,时间复杂度为O(n)
对于链表,在进行插入或删除时,不需要移动前后元素,只需要修改指针,时间复杂度为O(1)
🌺总结
1.当难以估计线性表的长度或存储规模时,不应采用顺序表,应采用链表。
2.若需要经常进行插入,删除操作时,不应采用顺序表,应采用链表。
3.若需要经常按序号访问结点值时,不应采用链表,应采用线性表。
🌺每日金句
行动中,有时会犯错。什么都不做,则永远在犯错 ——罗曼·罗兰
本人不才,如有错误,欢迎各位大佬在评论区指正。有帮助的话还请【关注➕点赞➕收藏】,不行的话我再努努力💪💪💪