文档章节

数组和链表总结

九州暮云
 九州暮云
发布于 2017/09/11 17:16
字数 492
阅读 58
收藏 1

定义

  • 数组是具有相同数据类型的元素的集合

  • 链表是由链接/指针连接的元素的有序集合

访问方式

  • 在数组中,可以使用索引/下标值来访问元素,即元素可以被随机访问,比如arr[0]、arr[3]等,因此数组提供快速和随机访问。

  • 在链表中,元素不能随机访问,只能按顺序访问,访问元素需要花费O(n)时间

内存结构

  • 在数组中,元素以连续的方式存储在内存中

  • 在链表中,元素可以存储在任何可用的地方,节点的地址存储在以前的节点中

插入&删除

  • 因为元素存储在连续的内存位置,在数组中插入和删除需要更多的时间,每次操作都需要移动元素

  • 插入和删除在链表中是快速和容易的,因为只需要改变指针的值

内存分配

  • 在数组中,在编译时分配内存,即静态内存分配

  • 在链表中,内存在运行时分配,即动态内存分配

类型

  • 数组可以是单维的,二维的或多维的

  • 链表可以是单端链表、双端链表或循环链表

依赖性

  • 在数组中,每个元素都是独立的,与以前的元素或位置无关

  • 在链表中,元素的位置或地址存储在前一个元素/节点的链接部分

额外空间

  • 在数组中,没有使用类似链表的指针,因此不需要内存中的额外空间来存放指针

  • 在链表中,元素之间使用指针或链接来维护,因此使用指针,并且需要额外的内存空间

示例图

  • 数组

输入图片说明

  • 链表

输入图片说明

编译自:Difference between Array and Linked List | Array vs. Linked List

© 著作权归作者所有

共有 人打赏支持
九州暮云
粉丝 56
博文 140
码字总数 80876
作品 0
海淀
高级程序员
线性表--链式存储结构--静态链表

静态链表 一、存储结构 静态链表的存储结构.jpg 其中,有两对元素是特殊的: 第一对: 下标为0的元素,其数据不存放东西; 其游标是指向第一个没有存放数据的下标,此处为下标为5的元素。 第...

JS_HCX
03/27
0
0
JDK 1.7 HashMap原理及源码解析

简介 类定义 3. 具体使用 3.1 主要使用API(方法、函数) 3.2 使用流程 在具体使用时,主要流程是: 声明1个 HashMap 的对象 向 HashMap 添加数据(成对 放入 键 - 值对) 获取 HashMap 的某...

TonyStarkSir
08/08
0
0
Java:这是一份全面 & 详细的HashMap 1.7源码分析指南

前言 在 和 开发中非常常见 今天,我将带来 的全部源码分析,希望你们会喜欢。 目录 Entry类实现了Map.Entry接口 即 实现了getKey()、getValue()、equals(Object o)和hashCode()等方法 **/ ...

Carson_Ho
07/05
0
0
Java源码分析:HashMap 1.8 相对于1.7 到底更新了什么?

前言 在 和 开发中非常常见 而 相对于 更新多 今天,我将通过源码分析 ,从而讲解 相对于 的更新内容,希望你们会喜欢。 目录 Node = HashMap的内部类,实现了Map.Entry接口,本质是 = 一个映...

Carson_Ho
07/26
0
0
Java Collection、Map集合总结

1.Java中的Collection集合总结 Collection   |---List(存储有序,可重复)     |---ArrayList       底层数据结构是数组,查询快,增删慢。       线程不安全、效率高  ...

hafiz.zhang
2016/05/02
0
0

没有更多内容

加载失败,请刷新页面

加载更多

分布式框架spring-session实现session一致性使用问题

前言:项目中使用到spring-session来缓存用户信息,保证服务之间session一致性,但是获取session信息为什么不能再服务层获取? 一、spring-session实现session一致性方式 用户每一次请求都会...

WALK_MAN
14分钟前
1
0
C++ yield()与sleep_for()

C++11 标准库提供了yield()和sleep_for()两个方法。 (1)std::this_thread::yield(): 线程调用该方法时,主动让出CPU,并且不参与CPU的本次调度,从而让其他线程有机会运行。在后续的调度周...

yepanl
22分钟前
0
0
Java并发编程实战(chapter_3)(线程池ThreadPoolExecutor源码分析)

这个系列一直没再写,很多原因,中间经历了换工作,熟悉项目,熟悉新团队等等一系列的事情。并发课题对于Java来说是一个又重要又难的一大块,除非气定神闲、精力满满,否则我本身是不敢随便写...

心中的理想乡
32分钟前
15
0
shell学习之获取用户的输入命令read

在运行脚本的时候,命令行参数是可以传入参数,还有就是在脚本运行过程中需要用户输入参数,比如你想要在脚本运行时问个问题,并等待运行脚本的人来回答。bash shell为此提 供了read命令。 ...

woshixin
58分钟前
1
0
区块链技术中的那些能商用的企业级应用

WEPOWER是一家立陶宛初创企业,旨在改变可再生电力项目的付费方式。WePower公司创始人Nick Martyniuk表示,政府统一收购价的存在推动了全球风能与太阳能市场的发展。因此,他的公司希望帮助那...

问题终结者
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部