数组和链表的区别

2023-11-16

数组和链表的区别以及各自的优缺点

1.数组和链表的区别:
(1)数组的元素个数是固定的,而链表的结点个数可按需要增减。
(2)数组元素的存储单元在定义时分配,链表节点的存储单元在执行时动态向系统申请。
(3)数组的元素顺序关系由元素在数组中的位置(即下标)确定,链表中的节点关系由节点所包含的指针来体现。
(4)对于不是固定长度的列表,用可能最大长度的数组来描述,会浪费许多的存储空间。
(5)对于元素的插入、删除操作非常频繁的列表处理场合,用数组表示列表也不是不合适。若用链表实现,会使程序结构清晰,处理的方法也比较简便。
2.数组的特点
(1)在内存中,数组是一块连续的区域。
(2)数组需要预留空间,在使用前要先申请内存的大小,可能会浪费内存空间。
(3)插入数据和删除数据效率低,插入数据时,这个位置后面的数据在内存中要向后移。
(4)随机读取率很高。因为数组是连续的,知道每一个数据的内存地址,可以直接找到给的地址数据。
(5)并不利于扩展,数组定义的空间不够时要重新定义数组。
3.链表的特点
(1)在内存中可以存在如何地方,不要求连续。
(2)每一个数据都保存了下一个数据的内存地址,通过这个地址找到下一个数据。
(3)增删数据很容易。
(4)查找数据时效率低,因为不具有随机访问性。
(5)不指定大小,扩展方便。链表大小不用定义,数据随意增删。
4.数组的优点
(1)随机访问性强。
(2)查找速度快。
5.数据的缺点
(1)插入和删除效率低。
(2)可能会浪费空间。
(3)内存空间要求高,必须有足够的连续内存空间。
(4)数组大小固定,不能动态拓展。
6.链表的优点
(1)插入删除速度快。
(2)内存利用率高,不会浪费内存。
(3)大小没有固定,拓展很灵活。
7.链表的缺点
不能随机查找,必须从第一个开始遍历,查找效率低。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

数组和链表的区别 的相关文章

随机推荐

  • C语言学习开头以及个人目标

    一 自我介绍 本人是一个来自某末流211大学的本科生 因为高考的时候发挥失常了 原本可以去一些末985垫底专业或中211的热门专业 最后只能是双非一本随便挑 但是因为不甘心失败就冲了好学校的差专业 最终还是调剂了材料专业 后来好好学习想转专
  • vi/vim 设置tab为4个空格

    vim 编辑器中 tab 有时不是4个空格 代码看起来比较凌乱 配置文件位置 etc vim vimrc Kali linux set ts 4 set softtabstop 4 set shiftwidth 4 set expandta
  • 转帖:DirectShow 在VS2005中环境配置

    转载请标明是引用于 http blog csdn net chenyujing1234 baseclasses参考代码 VS2005下编译通过 http www rayfile com zh cn files 12ac1b0c 7335 1
  • 关于QQ的技巧

    让电脑只能上到自己的QQ 任何QQ都无法登陆 首先把自己的QQ设置为自动登陆模式 接下来最关键的就是移动或删除QQ主目录下的WizardCtrl dll文件 这样就算别的QQ怎么样也登陆不了的了 如果你想上两个QQ的话就把QQ整个目录复制多
  • 2022年 IEEE VIS 科学可视化与体渲染论文整理与分析

    因为最近工作的关系 需要研究一下IEEE VIS中2017年以后的与我之前主要方向 体渲染 医学可视化 有关的论文 我把这些年全部的论文进行了筛选和梳理 总共筛选出57篇论文 打算写一个文章来记录这些内容 这个栏目是2022年的6篇论文的介
  • spark集群搭建与mysql元数据管理

    找个spark集群搭建是针对于上一篇hadoop的基础上搭建的 所以spark的版本也是要按照着hadoop版本进行下载 1 解压spark 修改spark的 etc profile的home目录 2 安装SCALA 并配置SCALA HO
  • ElementUI的简单使用方法讲解

    这里我们以引入button按钮为例 其实很多表单 或者 时间 等等的组件 引入方式都是一样的 举一反三吧 首先 yarn add element ui S 让我们来安装这个包 main js 全局注册 element ui这个组件 完整引入
  • Java的异常(分类、处理原则、应用实例、注意事项)

    学习笔记 异常 异常 是在运行时期发生的不正常情况 在java中用类的形式对不正常情况进行了描述和封装对象 描述不正常的情况的类 就称为异常类 以前 通常将正常流程代码和问题处理代码相结合 现在将正常流程代码和问题处理代码分离 提高阅读性
  • 2022年淘宝/天猫/京东618自动任务助手,带抢购功能源码

    下载地址 https wwc lanzouq com b01cfbrbi 支持自动完成淘宝 天猫 京东618任务 自动领取奖励 解放双手 棒棒的 先开启无障碍和悬浮窗权限 再运行助手 运行过程中可以按音量减 键强制停止 提前关闭媒体声音 直
  • 电梯安全监测丨S271W无线水浸传感器用于电梯机房/电梯基坑水浸监测

    城市化进程中 电梯与我们的生活息息相关 高层住宅 医院 商场 学校 车站等各种商业体建筑 公共建筑中电梯为我们生活工作提供了诸多便利 保障电梯系统的安全至关重要 特别是电梯机房和电梯基坑可通过智能化改造提高其安全性和稳定性 例如在暴风雨天气
  • 【转载】基于 NXP i.MX8QM 的 硬件隔离 介绍

    一 Hardware Partition 1 1 功能简介 Hardware Partition 中文叫硬件分区或者硬件隔离 基于 NXP i MX8QM 的 Hardware Partition 功能将 Resource Memory P
  • 2019顺网无盘服务器配置,顺网无盘如何不安装网维客户端上传系统到无盘服务器...

    14Q3的无盘万能镜像包中并没有安装网维大师客户端 为的是让大家可以自由选择安装网维大师客户端版本进行安装 而不会因为升级 降级这些麻烦又难理解的事情阻碍大家 近期也有人询问如何不安装网维客户端直接上传系统 其实非常简单 这里给大家做个详细
  • usb设备的检测及区分(sata硬盘、优盘及移动硬盘)

    原理 1 如果有外置usb设备插入 会产生 proc scsi usb storage目录 ide硬盘上默认 没有 并且会在 proc scsi usb storage目录中产生数字文件 此文件存储了设 备的相关信息 2 sys class
  • ES5和ES6声明的“全局变量”有什么不同?

    复看红宝石书关于执行上下文与作用域部分的时候发现了以前遗漏的小知识点 let和const的顶级声明不会定义在全局上下文中 1 什么是全局上下文 根据ECMAScript实现的宿主环境不同 表示全局上下文的对象可能不一样 但在浏览器中 我们所
  • ISE在线逻辑分析仪Chipscope的使用

    前言 和 Quartus 的 SingleTapII 类似 ISE 也有自己的内置在线逻辑分析仪 Chipscope 在这里记录一下 Chipscope 的主要使用方法 以便以后回顾 本文使用 UART 串口回环模块进行验证 我们要抓取的信
  • 【Linux】设计模式-----简单工厂模式

    概念 简单工厂模式即 只需要输入实例化对象的名称 工厂类就可以实例化出来需要的类 核心 实现工厂模式的核心就是多个派生类public继承基类 同时根据用户的需求在简单工厂类里面实例化基类的对象 从而根据基类里面的虚函数来实现对派生类的函数调
  • ajax核心代码提交,emlog评论ajax提交的两种方法

    推荐使用方法二 不需要修改源代码 通过正则过滤出系统的错误消息 方法一 需要修改源代码 1 include lib function base php中 function show 404 page 函数上方添加函数 显示json信息 pa
  • TFTP协议下载实验

    include
  • java.lang.ClassNotFoundException: Didn‘t find class “###“ on path: DexPathList

    项目场景 例如 项目场景 使用AS开发时 项目中引用了封装的aar或者第三方aar文件 并且项目使用了AndroidX时APP闪退问题 报错信息如下 报错信息截图大概如下 问题描述 Caused by java lang ClassNotF
  • 数组和链表的区别

    数组和链表的区别以及各自的优缺点 1 数组和链表的区别 1 数组的元素个数是固定的 而链表的结点个数可按需要增减 2 数组元素的存储单元在定义时分配 链表节点的存储单元在执行时动态向系统申请 3 数组的元素顺序关系由元素在数组中的位置 即下