顺序表

定义:在内存中用地址连续的一块存储空间顺序存放线性表的各元素。在程序设计语言中,一维数组在内存中占用的存储空间是一维连续的存储空间,因此我们用一维数组存储数据来表示顺序表。
优点

  1. 由于顺序表是用数组来存储数据,内存空间连续,当访问数据时可以达到使用数组下标的方式随机访问。
  2. CPU高速缓存的命中率高。

解释:
数据保存在内存中,数据是在CPU里进行运算的(逻辑和算术)。但是CPU速度太快,内存的速度跟不上CPU的速度。于是在CPU和内存之间存在一些寄存器和缓存器,用来保存数据。当CPU要使用数据时先在这些缓存器里读取数据,没有读到时就到内存中读取数据,然而数据读到缓存器不是一个数据一个数据读的,它是按照计算机的不同,在内存中连续读一段数据存在缓存器中,由于数组空间连续,读到缓存器中的有效数据多,所以缓存命中率高。

缺点

  1. 空间有限,不够时需要增容(性能有消耗),并且会存在一定的空间浪费。(扩容一般按2倍或者1.5倍进行增容,如果数据存储过少,导致空间浪费)。
  2. 头部或者中间插入/删除数据,要挪动数据,效率低。时间复杂度O(N)。

链表(带头双向循环链表)

定义:链表是一种物理存储结构上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的 。
优点

  1. 按需分配内存,需要存储一个数据时,就申请一块空间,不会存在空间浪费。
  2. 可以在任意位置插入和删除数据,时间复杂度位O(N)。

缺点

  1. 不支持随机访问。
  2. 导致缓存污染,低命中率。

缓存拿数据为在内存中连续读一段数据,由于链表物理结构非连续,导致拿取数据时有效数字大概率只有一个,其他数据为非有效数据,可能会覆盖缓存器中的其它有效数据。

总结

顺序表和链表相辅相成的,各有的的优点和缺点。我们并不能说哪一个更好。他们应用在不同的领域会有不同的效果,所以两者我们都需要好好掌握。

顺序表和链表的优缺点相关推荐

  1. 比较顺序表和链表的优缺点

    1.比较顺序表和链表的优缺点,他们分别在什么场景下使用它. 顺序表支持随机访问,单链表不支持随机访问. 顺序表插入/删除数据效率很低,时间复杂度为O(N)(除尾插尾删),单链表插入/删除效率更高,时间 ...

  2. 2.6顺序表和链表的优缺点(区别、特点)详解

    顺序表和链表由于存储结构上的差异,导致它们具有不同的特点,适用于不同的场景.本节就来分析它们的特点,让读者明白 "在什么样的场景中使用哪种存储结构" 更能有效解决问题. 通过系统地 ...

  3. 顺序表和链表的优缺点理解

    若某线性表最常用的操作是存取任一指定序号的元素和在最后进行插入和删除运算,则利用哪种存储方式最节省时间?D A.双链表 B.单循环链表 C.带头结点的双循环链表 D.顺序表 想要存取任一指定序号的元素 ...

  4. 【数据结构】顺序表和链表的优缺点

    1.顺序表 优点: 1.物理空间是连续的,方便使用下标随机访问. 缺点: 1.由于需要物理空间连续,空间不够需要扩容.扩容本身有一定消耗,其次扩容机制还存在一定的空间浪费. 2.头部或者中部的插入.删 ...

  5. 【数据结构】线性表4——顺序表和链表的比较

    文章目录 顺序表和链表的比较 单链表.循环链表和双向链表的时间效率比较 顺序表和链表的优缺点比较 顺序表和链表的基本操作比较 实现线性表时,用顺序表还是链表好? 顺序表和链表的逻辑结构都是线性结构,都 ...

  6. 顺序表和链表各自的优缺点

    顺序表是将数据元素放到一块开辟的连续存储空间,相邻元素的逻辑地址也相邻(逻辑与物理统一) 在上面的图片中可以看到顺序表是在堆中是一块连续的内存空间 优点:1.空间利用率高(连续存放,命中率高) 2.查 ...

  7. java数据结构与算法之顺序表与链表深入分析

    转载请注明出处(万分感谢!): http://blog.csdn.net/javazejian/article/details/52953190 出自[zejian的博客] 关联文章: java数据结 ...

  8. 顺序表与链表结构及解析

    目录 前言 一.顺序表和链表是什么? 二.顺序表和链表的结构分析 0.线性表 1.顺序表 1.1顺序表概念及结构 1.2顺序表功能的基本实现 3.链表 3.1 链表的概念及结构 3.2 链表的分类 前 ...

  9. Datawhale组队学习 Task02:顺序表和链表(2天)

    Task02 顺序表和链表(2天) 1. 线性表的定义与操作 1.1 线性表的定义 线性表(Linear List)是由n(n >= 0)个相同类型的数据元素a1,a2,...,an 组成的有序 ...

  10. 顺序表、链表、双向循环链表

    顺序表.链表.双向循环链表 SeqList.h #pragma once #include<stdio.h>#define ListSize 100 //线性表的最大长度 typedef ...

最新文章

  1. 解决mysqlAccess denied for user'root'@'IP地址'问题
  2. C语言常用宏定义(#define)使用方法
  3. 「GIT SourceTree冲突」解决方案
  4. AndroidManifest详解
  5. 1017. A除以B (20)
  6. springboot+mybatis日志显示SQL
  7. 中国双燃料(DF)发动机市场趋势报告、技术动态创新及市场预测
  8. IntelliJ IDEA使用技巧(二)——添加jar包
  9. php反射机制详解,PHP反射机制
  10. sumif单列求和_Sumif、Sumifs单列多条件求和
  11. mac 重置系统关机启动参数,重置电脑闪存数据
  12. 工具系列 | 使用Lodop进行WEB打印程序开发
  13. 脑部神经系统结构模式图,大脑的神经结构示意图
  14. pandas pandas中stack()与unstack()函数用法
  15. 边缘设备、系统及计算杂谈(8)——dapr学习之一
  16. 【财富空间】如何看待目前国内AI公司的估值?
  17. Node-js-起步
  18. 新能源车,许家印的雄心,恒大的第二战场
  19. linux下查看opencv安装路径以及版本号;多个opencv管理
  20. 用户界面设计黄金三原则

热门文章

  1. Web网页设计作业html
  2. estore简版商城问题总结
  3. 自在服务器虚拟化,新破晓诛仙3单机版16职业商业仿官青罗天界灵境神隐虚拟机一键端GM网单...
  4. 新浪微博系统 Xweibo v1.1.1beta 免费版Xweibo-Xweibo 软件系统简介(PHP+MYSQL)
  5. 写给本命年24岁的自己和你:这一年决定你的未来
  6. Linux Block Driver - 1
  7. 知乎700万人围观:华为65万年薪,公务员18万年薪,怎么选?
  8. 适用于Windows的Xcode:在PC上安装Xcode的5种方法
  9. 【Proteus】超声波测距
  10. 联想服务器r525维修,扩展性强易管理 联想R525 G2服务器拆解