文档章节

数组和链表总结

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

定义

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

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

访问方式

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

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

内存结构

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

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

插入&删除

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

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

内存分配

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

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

类型

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

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

依赖性

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

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

额外空间

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

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

示例图

  • 数组

输入图片说明

  • 链表

输入图片说明

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

© 著作权归作者所有

共有 人打赏支持
九州暮云
粉丝 57
博文 142
码字总数 81160
作品 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
手把手带你源码分析 HashMap 1.7

前言 HashMap 在 Java 和 Android 开发中非常常见 今天,我将带来 HashMap 的全部源码分析,希望你们会喜欢。 目录 1. 简介 类定义 3. 具体使用 3.1 主要使用API(方法、函数) 3.2 使用流程...

烂猪皮
04/21
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Apache用户认证,域名跳转

11月15日任务 11.18 Apache用户认证 11.19/11.20 域名跳转 11.21 Apache访问日志 11.18 Apache用户认证 vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf //把123.com那个虚拟主机编辑......

zgxlinux
37分钟前
1
0
idea 添加 VUE 的语法支持和开发

《一》VUE的开发分两种,一种是直接在HTML文件中使用,一种是VUE文件的形式开发 1,首先我们先让 HTML 文件支持 VUE 的语法指令提示 2,File -> Setting -> Edit -> Inspections -> html 3,...

文文1
55分钟前
1
0
【NLP】【七】fasttext源码解析

【一】关于fasttext fasttext是Facebook开源的一个工具包,用于词向量训练和文本分类。该工具包使用C++11编写,全部使用C++11 STL(这里主要是thread库),不依赖任何第三方库。具体使用方法...

muqiusangyang
今天
3
0
防止Tweak

什么是tweak? 英文意思为捏, 拧,扭,稍稍调整(机器、系统等)。 依据维基百科的定义,tweak指的是对电子系统进行轻微调整来增强其功能的工具;在ios中tweak特指那些能够增强其它可执行程...

HeroHY
今天
3
0
linux中常用标识---不定期更新

LINUX常用标识符: 1 & && | || &: 表示进程在后台运行 例如 redis-server & 不是所有后台运行都是& 比如es ./bin/elasticsearch -d es后台运行&&: 第一个命令执行成功后 才执行后面的命令...

geek土拨鼠
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部