1.数组:

数组是将元素在内存中连续存放,由于每个元素占用内存相同,可以通过下标迅速访问数组中任何元素。但是如果要

在数组中增加一个元素,需要移动大量元素,在内存中空出一个元素的空间,然后将要增加的元素放在其中。同样的

道理,如果想删除一个元素,同样需要移动大量元素去填掉被移动的元素。如果应用需要快速访问数据,很少插入和

删除元素,就应该用数组。

2.链表:

链表中的元素在内存中不是顺序存储的,而是通过存在元素中的指针联系到一起,每个结点包括两个部分:一个是存

储数据元素 的数据域,另一个是存储下一个结点地址的 指针。如果要访问链表中一个元素,需要从第一个元素始,

一直找到需要的元素位置。但是增加和删除一个元素对于链表数据结构就非常简单了,只要修改元素中的指针就可以

了。如果应用需要经常插入和删除元素你就需要用链表。

3.区别:

(1)存储位置上:

数组逻辑上相邻的元素在物理存储位置上也相邻,而链表不一定;

(2)存储空间上:

链表存放的内存空间可以是连续的,也可以是不连续的,数组则是连续的一段内存空间。一般情况下存放相同多的数

据数组占用较小的内存,而链表还需要存放其前驱和后继的空间。

(3)长度的可变性:

链表的长度是按实际需要可以伸缩的,而数组的长度是在定义时要给定的,如果存放的数据个数超过了数组的初始大

小,则会出现溢出现象。

(4)按序号查找时,数组可以随机访问,时间复杂度为O(1),而链表不支持随机访问,平均需要O(n); 

(5)按值查找时,若数组无序,数组和链表时间复杂度均为O(1),但是当数组有序时,可以采用折半查找将时间复

杂度降为O(logn); 

(6)插入和删除时,数组平均需要移动n/2个元素,而链表只需修改指针即可; 

(7)空间分配方面:

数组在静态存储分配情形下,存储元素数量受限制,动态存储分配情形下,虽然存储空间可以扩充,但需要移动大量

元素,导致操作效率降低,而且如果内存中没有更大块连续存储空间将导致分配失败; 即数组从栈中分配空间,,对

于程序员方便快速,但自由度小。

链表存储的节点空间只在需要的时候申请分配,只要内存中有空间就可以分配,操作比较灵活高效;即链表从堆中分

配空间, 自由度大但申请管理比较麻烦。

数组与链表的优缺点和区别相关推荐

  1. [数据结构] 数组与链表的优缺点和区别

    概述 数组 是将元素在内存中连续存放,由于每个元素占用内存相同,可以通过下标迅速访问数组中任何元素.但是如果要在数组中增加一个元素,需要移动大量元素,在内存中空出一个元素的空间,然后将要增加的元素放在 ...

  2. 数据结构:数组和链表的区别(数组和链表的优缺点 数组和链表的适用场景)

    数组和链表是两种基本的数据结构,他们在内存存储上的表现不一样,所以也有各自的特点 数组 一.数组的特点 1.在内存中,数组是一块连续的区域 2.数组需要预留空间 在使用前需要提前申请所占内存的大小,这 ...

  3. 数组和链表的联系和区别

    一.数组和链表的联系 数组和链表都是线性表数据结构. 二.数组和链表的区别 1.数组可以随机以及顺序存取,而链表只能顺序存取. 2.数组静态分配内存,链表动态分配内存. 3.数组是一种线性表数据结构, ...

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

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

  5. 单向链表与双向链表的区别

    昨天面试官面试的时候问了我一道关于链表的问题:情境如下 面试官:请说一下链表跟数组的区别? 我: 数组静态分配内存,链表动态分配内存:数组在内存中连续,链表不连续:数组利用下标定位,时间复杂度为O(1 ...

  6. 数据结构各结构特点(数组、链表、栈、队列、树)

    目录 一.数组 二.链表 三.栈 四.队列 五.树 1.二叉树 2.二叉查找树 3.平衡二叉树(AVL树) 4.红黑树 六.总结: 1.红黑树和平衡二叉树的区别: 2.为什么有了数组和链表还要引入二叉 ...

  7. 数组和链表的详细介绍

    一.什么是数组.链表 数组和链表是两种不同的基本数据结构,它们在内存存储上的表现不一样,所以也有各自的特点. 1.数组 数组是一组具有相同数据类型的变量的集合,这些变量称之为集合的元素: 每个元素都有 ...

  8. 数据结构:数组和链表的区别以及各自的优缺点

    原文地址 http://blog.csdn.net/qq_25806863/article/details/70607204 数组和链表是两种基本的数据结构,他们在内存存储上的表现不一样,所以也有各自 ...

  9. 数组和链表的区别和优缺点总结!

    数组和链表是两种基本的数据结构,他们在内存存储上的表现不一样,所以也有各自的特点. 链表中各结点在内存中的存放位置是任意的. 链表与数组的主要区别 (1)数组的元素个数是固定的,而组成链表的结点个数可 ...

最新文章

  1. centos下配置vsftpd
  2. ubuntu core 文件产生
  3. 数据采集标注、模型开发、部署落地,百度大脑全栈 AI 能力详解
  4. 部署高可用 Etcd 集群
  5. mysql执行语句返回主键_mysql语句insert后返回主键
  6. 电脑用电量_为什么换了智能电表后,我家用电量一下子多了这么多呢?
  7. 内存管理的概念及作用
  8. web界面设计要素及基本设计规范
  9. 九、 Excel二维码制作和插件推荐
  10. 人工智能对摄影测量与遥感的影响与挑战——龚健雅院士
  11. excel工作表合并
  12. 使用Cent Browser+Aria2+Bilibili Envolved下载b站视频--保姆级安装步骤
  13. 使用C加加实现计算器功能。可以实现加减乘除。需要用到内联。函数重载。new运算符。缺省参数
  14. Intel汇编-无符号整数除法
  15. odb 使用指南(三)持久化对象的处理
  16. 远程桌面端口映射如何设置
  17. 多种导出方式,教你快速将每个快递信息导出CSV表格
  18. Pantoea(泛菌属)——肠道内善恶兼备的神秘细菌
  19. php查看其配置文件路径,php配置文件php.ini所在路径如何查看?
  20. python——常见运算符号

热门文章

  1. vue侧边栏组件_画布侧边栏Vue组件
  2. 制售《原神》外挂非法获利200万,外挂的危害有多大?
  3. 计算机硬盘分区信息,你知道电脑硬盘分区Guid格式和MBR格式有什么区别吗?来看看!...
  4. Task02 python与excel
  5. Three.js-光线投射(raycaster)
  6. ppt中只有声音没有图像处理
  7. RAR文件解压缩时系统提示“CRC校验失败,文件被破坏”,修复损坏文件的办法!
  8. 只因为给我打了0.1分,重新撸了个记账小程序
  9. Mac book air在浏览器中显示flash过期问题
  10. HDU 2197:本原串