数组与链表的优缺点

2023-11-01

数组,在内存上给出了连续的空间.链表,内存地址上可以是不连续的,每个链表的节点包括原来的内存和下一个节点的信息(单向的一个,双向链表的话,会有两个). 

数组优于链表的: 
1.内存空间占用的少,因为链表节点会附加上一块或两块下一个节点的信息.但是数组在建立时就固定了.所以也有可能会因为建立的数组过大或不足引起内存上的问题. 
2.数组内的数据可随机访问.但链表不具备随机访问性.这个很容易理解.数组在内存里是连续的空间.比如如果一个数组地址从100到200,且每个元素占用两个字节,那么100-200之间的任何一个偶数都是数组元素的地址.可以直接访问.链表在内存地址可能是分散的.所以必须通过上一节点中的信息找能找到下一个节点. 
3.查找速度上.这个也是因为内存地址的连续性的问题.不罗索了. 
链表优于数组的: 
1.插入与删除的操作.如果数组的中间插入一个元素,那么这个元素后的所有元素的内存地址都要往后移动.删除的话同理.只有对数据的最后一个元素进行插入删除操作时,才比较快.链表只需要更改有必要更改的节点内的节点信息就够了.并不需要更改节点的内存地址. 
2.内存地址的利用率方面.不管你内存里还有多少空间,如果没办法一次性给出数组所需的要空间,那就会提示内存不足,磁盘空间整理的原因之一在这里.而链表可以是分散的空间地址. 
3.链表的扩展性比数组好.因为一个数组建立后所占用的空间大小就是固定的.如果满了就没法扩展.只能新建一个更大空间的数组.而链表不是固定的,可以很方便的扩展.

   数组与链表的优缺点;    
    数组:

    优点:使用方便 ,查询效率 比链表高,内存为一连续的区域 

    缺点:大小固定,不适合动态存储,不方便动态添加
    链表:

     优点:可动态添加删除   大小可变   
     缺点:只能通过顺次指针访问,查询效率低

 补充:

顺序表的优点:查找方便,适合随机查找 
顺序表的缺点:插入、删除操作不方便,因为插入、删除操作会导致大量元素的移动 

链接表的优点:插入、删除操作方便,不会导致元素的移动,因为元素增减,只需要调整指针。 
顺序表的缺点:查找方便,不适合随机查找

链表的特性是在中间任意位置添加删除元素的都非常的快,不需要移动其它的元素。  
链表顾名思义,要把各个元素链接起来才算撒。    
通常链表每一个元素都要保存一个指向下一个元素的指针(单链表)。    
双链表的化每个元素即要保存到下一个元素的指针,还要保存一个上一个元素的指针。    
循环链表则把最后一个元素中保存下一个元素指针指向第一个元素。    
数组是一组具有相同类型和名称的变量的集(百度)合。这些变量称为数组的元素,每个数组元素都有一个编号,这个编号叫做下标,我们可以通过下标来区别这些元素。数组元素的个数有时也称之为数组的长度。
数组在进行查找,排序操作是很方便;链表不需要连续空间,而且作插入操作方便!    
分配空间上也不同,建立过程也不同!
链表和数组的本质差异    
     
  1     在访问方式上    
        数组可以随机访问其中的元素    
        链表则必须是顺序访问,不能随机访问    
     
  2     空间的使用上    
        链表可以随意扩大    
        数组则不能    

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

数组与链表的优缺点 的相关文章

  • 增强型PWM(EPWM)如何输出互补功能?

    1 概念 互补 两根线 输出的PWM 只有一端导通 和死区概念类似 死区时间 指在这段时间 上下都没有输出 带死区的PWM波可以防止上下两个器件同时导通 也就是说 当一个器件导通后关闭 再经过一段死区 这时才能让另一个导通 例如 红色线条的
  • nuxt百度收录

    import cheerio from cheerio export default Global page headers https go nuxtjs dev config head mode universal 修改百度收录 hoo
  • 04 ImageView中图片保存到文件

    最近做的一个小App中的一个功能 把ImageView中的图片保存为一个 jpg文件 如果设备上有SDCard 图片会被保存到SD卡上 如果没有则保存在设备的存储空间中 这里主要包含了两个要点 一是 Android文件保存时文件夹的创建 二
  • detectron2概述

    目录 detectron2框架 configs datasets README md prepare for tests sh prepare panoptic fpn py demo demo py predictor py detect

随机推荐

  • 关于Docker如何安装nginx

    目录 1 Nginx 1 2 安装nginx 2 容器之间相互通信 2 1 两个容器在同一网段 2 2 两个容器在不同网段 1 Nginx Nginx也是一款服务器 我们常用它做如 反向代理 负载均衡 动态与静态资源的分离的工作 反向代理
  • C语言-数据结构-栈(静态栈与动态栈)

    一 简介 在哔哩哔哩看视频学的 赫斌老师数据结构入门的内容 b站搜索 av6159200 P33 通过学习 能独立把赫斌老师教的敲出来 由于动态栈 链表阉割版 的功能很少 我并没有增加什么其它功能 但是我自己实现了静态栈 数组阉割版 还有就
  • 卸载联软UniAccess,删除UniAccess Agent记录

    UniAccess 卸载 公司假以安全上网为由 让公司员工安装所谓的 XX上网助手 实则是内嵌了联软的UniAccess监控系统 有关这个软件的用途就不用多介绍了 能找到这里的 我想已经对这个 流氓 软件有了基本的认识 话不多说 赶紧想办法
  • Kafka使用工具封装

    maven依赖
  • c# redis hashid如何设置过期时间_Redis系列(三):Redis持久化机制(RDB & AOF)

    在前两篇关于Redis的文章中 已经详细的介绍了Redis常用的数据结构相关内容 如果还没看的小伙伴可以先过一遍 Redis基本数据类型 Redis跳跃表详解 本篇文章主要介绍 Redis数据持久化机制 RDB AOF 在此之前需要先了解一
  • Spring Security 学习(一)认证与授权源码分析——一次痛苦的爬坑经历

    一点感悟 一个疏忽 花了 5h 解决了 哎 用一首歌来表达一下现在的心情 点击 不过也算摸清了Spring Security 一点基本原理 没有白费的时间 学习新知识的时候 遇到解决不了的问题一定不能心急 越是这个时候越要静下心来一步一步的
  • PLSQL连接Oracle 数据库配置详解

    1 下载instantclient basic win32 11 2 0 1 0 Oracle Instant Client Free tools and libraries for connecting to Oracle Databas
  • Unity中实时获取网格上点的位置,还有对应的面和法线

    在Unity中 可以使用Mesh类来获取一个网格上点的位置以及对应的面和法线 以下是具体步骤 步骤一 获取网格对象 在脚本中 需要先获取要操作的网格对象 可以使用以下代码 Mesh mesh GetComponent
  • java 静态块的作用域_Java语言的作用域及分类

    在java编程中 将变量声明在不同的位置就具有不同的作用域 而作用域的大小则使用 来确定 使用 可以确定定义的变量的可见性及生命周期 目前在java编程中 变量类型主要有三种 分别如下 一 成员变量 类的成员变量的作用范围同类的实例化对象的
  • Jmeter和Postman那个工具更适合做接口测试?

    软件测试行业做功能测试和接口测试的人相对比较多 在测试工作中 有高手 自然也会有小白 但有一点我们无法否认 就是每一个高手都是从小白开始的 所以今天我们就来谈谈一大部分人在做的接口测试 小白变高手也许你只差这一次深入了解 一 接口测试的目的
  • linux中比较大小的符号,linux shell中的比较符号与特殊符号介绍

    shell字符串比较 判断是否为数字 二元比较操作符 比较变量或者比较数字 注意数字与字符串的区别 整数比较 eq 等于 如 if a eq b ne 不等于 如 if a ne b gt 大于 如 if a gt b ge 大于等于 如
  • Cisco交换配置快速生成树

    文章目录 1 拓扑图 2 Sw1配置 3 Sw2配置 1 拓扑图 2 Sw1配置 进入特权模式 Switch gt en 进入全局模式 Switch conf t 修改设备名称 Switch config hostname Sw1 进入接口
  • java线程安全之死锁

    死锁图解 死锁代码演示 package DeadLock 死锁代码要会写 一般面试官要求你会写 只有会写的 才会在以后开发中注意这个事儿 因为死锁很难调试 public class DeadLockDemo public static vo
  • CSS(重点选择器)

    文章目录 CSS入门 CSS的三种导入方式 选择器 重点 基本选择器 层次选择器 结构伪类选择器 属性选择器 美化网页元素 字体样式 文本样式 阴影 超链接伪类 列表 背景 渐变 盒子模型 边框border 内外边距 圆角边框 阴影 浮动
  • DeepSpeed的hostfile文件

    文章目录 一 hostfile文件 二 linux别名创建 2 1 使用 SSH 配置文件 三 参考文档 一 hostfile文件 DeepSpeed多机多卡训练时 需要配置hostfile文件 hostfile文件是一个主机名 或 SSH
  • STM32驱动0.96寸oled液晶屏

    一 硬件准备 单片机 STM32F103ZET6 液晶屏 0 96寸oled液晶屏 注意 1 本模块支持IIC 3线制SPI以及4线制SPI接口总线模式切换 如图2红框内所示 具体说明如下 A 使用4 7K电阻只焊接R3 R4 则选择4线制
  • Nginx 配置 HTTPS(腾讯云)

    本文简单总结如何在 Nginx 中配置 HTTPS 并将 HTTP 重定向到 HTTPS 一 环境说明 系统 CentOS7 6 应用服务器 Nginx 1 16 1 Tomcat 9 0 安全组已开放端口 22 80 443 3389 二
  • 富文本插件 vue-quill-editor

    安装 npm i vue quill editor 导入富文本样式 import quill dist quill core css import quill dist quill snow css import quill dist qu
  • C++学习笔记之二(C++语法基础之变量和数据类型)

    一 常量和变量 C 程序中的数据分为常量和变量两大类 其中 常量是在程序运行过程中不变的量 而变量是在程序运行过程中可以发生变化的值 常量分类 直接常量 符合常量和枚举常量 在本节文章中主要讲解直接常量和符合常量 而枚举常量将在后需章节中进
  • 数组与链表的优缺点

    数组 在内存上给出了连续的空间 链表 内存地址上可以是不连续的 每个链表的节点包括原来的内存和下一个节点的信息 单向的一个 双向链表的话 会有两个 数组优于链表的 1 内存空间占用的少 因为链表节点会附加上一块或两块下一个节点的信息 但是数