数组和链表的区别以及应用场景

首先我们要先理解什么是数组和链表

在计算机中要对给定的数据集进行若干处理,首要任务是把数据集的一部分(当数据量非常大时,可能只能一部分一部分地读取数据到内存中来处理)或全部存储到内存中,然后再对内存中的数据进行各种处理。
例如,对于数据集 S{1,2,3,4,5,6},要求 S 中元素的和,首先要把数据存储到内存中,然后再将内存中的数据相加。
当内存空间中有足够大的连续空间时,可以把数据连续的存放在内存中,各种编程语言中的数组一般都是按这种方式存储的(也可能有例外)
内存中的存储形式可以分为连续存储和离散存储两种。因此,数据的物理存储结构就有连续存储和离散存储两种,它们对应了我们通常所说的数组和链表,

数组和链表的区别

  • 数组:

数组是将元素在内存中连续存储的;它的优点:因为数据是连续存储的,内存地址连续,所以在查找数据的时候效率比较高;它的缺点:在存储之前,我们需要申请一块连续的内存空间,并且在编译的时候就必须确定好它的空间的大小。在运行的时候空间的大小是无法随着你的需要进行增加和减少而改变的,当数据两比较大的时候,有可能会出现越界的情况,数据比较小的时候,又有可能会浪费掉内存空间。在改变数据个数时,增加、插入、删除数据效率比较低。

  • 链表:

链表是动态申请内存空间,不需要像数组需要提前申请好内存的大小,链表只需在用的时候申请就可以,根据需要来动态申请或者删除内存空间,对于数据增加和删除以及插入比数组灵活。还有就是链表中数据在内存中可以在任

链表和数组使用场景

  • 数组应用场景:

数据比较少;经常做的运算是按序号访问数据元素;数组更容易实现,任何高级语言都支持;构建的线性表较稳定。

  • 链表应用场景:

对线性表的长度或者规模难以估计;频繁做插入删除操作;构建动态性比较强的线性表。

数组和链表的区别以及应用场景相关推荐

  1. 算法与数据结构--数组和链表的区别

    最近由于在找工作,经历了一些校招面试后,感觉在数据结构和操作系统上面,还有很多的欠缺.所以今天要学习一下数据结构.还是从面试的那到题开始. 数组和链表的区别? C和C++语言中用数组处理一组数据类型相 ...

  2. 每日一题(41)—— 数组和链表的区别

    数组和链表的区别: 数组:数据顺序存储,固定大小 连表:数据可以随机存储,大小可动态改变

  3. 20140617 数组和链表的区别

    1.数组和链表的区别 逻辑结构方面: 数组:静态申请的连续的内存空间,编译阶段确定空间大小,运行阶段是不允许改变 链表:动态申请的内存空间,并不像数组一样需要事先申请好大小,链表是现用现申请就OK,根 ...

  4. php集合与数组的区别,php数组和链表的区别总结

    PHP中数组和链表的区别 从逻辑结构来看 1..数组必须事先定义固定的长度(元素个数),不能适应数据动态地增减的情况.当数据增加时,可能超出原先定义的元素个数:当数据减少时,造成内存浪费:数组可以根据 ...

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

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

  6. php数组和链表的区别,什么是链表?链表与数组的区别?

    链表的相关知识整理 什么是链表 链表是一种物理存储单元上非连续.非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的.链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时 ...

  7. 数据结构之数组和链表的区别

    第一题便是数据结构中的数组和链表的区别 数组(Array) 一.数组特点: 所谓数组,就是相同数据类型的元素按一定顺序排列的集合:数组的存储区间是连续的,占用内存比较大,故空间复杂的很大.但数组的二分 ...

  8. 数组和链表的区别详解

    目录 1.什么是数组和链表 2.数组和链表的区别 1.什么是数组和链表 数组介绍 数组:相同数据类型的元素按照一定的顺序排列的集合 数组本身属于引用数据类型,数组是由下标索引和data两部分组成. 数 ...

  9. 数组和链表的区别浅析

    1.链表是什么 链表是一种上一个元素的引用指向下一个元素的存储结构,链表通过指针来连接元素与元素: 链表是线性表的一种,所谓的线性表包含顺序线性表和链表,顺序线性表是用数组实现的,在内存中有顺序排列, ...

最新文章

  1. 括号匹配算法 java_使用栈实现括号匹配算法-java
  2. 2016年科技阅读列表
  3. java session持久化_Session的生命周期和持久化
  4. vue项目中阻止浏览器返回上一页
  5. linux如何自动调jiaob,最牛B的 Linux Shell 命令 系列连载(四)
  6. 挪车+php,还在苦苦寻找占你车位的人?关注这个微信号实现“一键挪车”
  7. 【ElasticSearch】Es 源码之 NodeClient 源码解读
  8. TypeScript--函数
  9. ospybook安装包及安装过程
  10. sprintf': This function or variable may be unsafe
  11. python控制、监听鼠标键盘
  12. OpenWrt--高通QCA9563添加多wan口方法
  13. 达梦数据库导出表格形式(Excel)方式
  14. 深入理解虚拟内存机制
  15. “企业级零代码黑客马拉松大赛”决赛名单公布
  16. 为什么要避免使用malloc()和free()函数?
  17. SpringBoot MongoDB 插入内容去掉_class字段
  18. 从Zero搭建一个属于自己的机房
  19. 常用oracle数据库查询命令
  20. Modelsim10.5和ISE14.7安装及联合仿真

热门文章

  1. ABAP:利用SAP定时器自动刷新ALV
  2. Python:用生成器的方式计算任意起止范围内质数的和。
  3. mysql默认排序规则_mysql 字符集与排序规则的简单了解
  4. 评估指标_供应链改进常用评估指标
  5. [javaweb] servlet介绍与servlet的继承关系 和 service 方法 (一)
  6. CTF-攻防世界-reverse进阶-srm-50;(巨详细)
  7. Python教程:json中encode与decode区别
  8. Python实现目录文件的全量和增量备份
  9. ffmpeg:Codec for stream 0 does not use global headers but container format requires global headers
  10. beyond compare如何添加新文件并重新比较?