数组与链表

数组与链表

链表

1,链表是什么:

链表是一种上一个元素的引用指向下一个元素的存储结构,链表通过指针来连接元素与元素;
链表是线性表的一种,所谓的线性表包含顺序线性表和链表,顺序线性表是用数组实现的,在内存中有顺序排列,通过改变数组大小实现。而链表不是用顺序实现的,用指针实现,在内存中不连续。意思就是说,链表就是将一系列不连续的内存联系起来,将那种碎片内存进行合理的利用,解决空间的问题。
所以,链表允许插入和删除表上任意位置上的节点,但是不允许随即存取。链表有很多种不同的类型:单向链表、双向链表及循环链表。

2,单项链表
单项链表
单项链表包含两个域,一个是信息域,一个是指针域。也就是包含两部分,一部分存储或者显示节点的信息,一部分保存下一个节点的地址,最后一个保存的是空值。

3,双向链表

双向链表即每个节点保存了两个方向的信息,一个指向前一个节点,一个指向后一个节点。

双向链表
4,循环链表

即最后的节点指针域保存的是第一个节点的位置信息,反之亦然。
循环链表

单向链表双向链表
每个元素只有一个指针只会下一个元素的地址每个元素有两个指针只会上一个和下一个元素的地址
查询较慢较快,可以通过二分查找来提速
增删较快更快
存储效率略高,除了存储元素,只会存储一个指针较低,除了存储元素,需要存储两个指针

双向链表的增、删、查均优于单向链表,但是目前市面上用的较多的仍为单向链表,主要是双向链表的多一个指针,在存储效率上低于单向链表。一个指针在32位系统需要4个字节来存储,在64位系统需要8个字节来存储。
由此可知,链表存储结构在内存中是非连续的,非顺序的,元素顺序主要靠链表中的指针来实现。

数组
  • 数组是相同数据类型的元素按一定顺序排列的集合。所以数组在内存中连续,链表不连续。声明一个数组的时候就在内存中划出一片连续的区域。
  • 数组中的所有元素必须是同类型的,或者是相关类型的衍生类型,所以数组又称为同质类型结构。
  • 数组元素可以直接访问,数组下标从0开始。
  • 数组是从抽象父类Array派生出来的引用类型。
区别

数组跟链表的区别

在这里插入图片描述

常用的数据结构时间复杂度:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值