数组与链表

数组与链表是两种基本的数据结构,它们都有各自的特点,在存储与数据操作等方面均有所不同。

一、数组

数组是有序的元素序列,由多个相同数据类型的变量组成。数组名即这一组变量集合的命名。

1.1 数组的特点

(1)使用数组需要预先分配空间;
(2)在内存中,数组是一块连续的区域;
(3)数组中每个元素都有对应的下标。

1.2 数组的优点

数组的随机访问速度快。在对数组中元素进行查找时,我们很容易通过元素下标快速查找到对应元素,时间复杂度为O(1)。

1.3 数组的缺点

(1)存在浪费内存空间的可能。由于数组在使用前要预先分配空间,在无法预知可能需要的数组空间大小的情况下,预分配较大的数组长度会导致内存空间的浪费。
(2)插入和删除效率低下。数组是在内存中是一块连续的区域,每个变量对应一个位置,在对数组进行中间或起始位置插入时,需要将插入点及其后面的数据在内存中后移;同理,在进行删除操作时,也需要将删除点以后的全部数据前移。
(3)无法扩展。数组是提前定义的,在空间分配完成后不能根据数据进行空间扩展,数组空间不够用时需要重新定义新的足够长的数组。

二、链表

链表是由一系列结点组成的数据链。链表的每一个结点由本结点的数据和指向下一个结点的指针组成。链表根据指针的不同可分为单向链表、双向链表、循环链表。

  • 单向(线性)链表。单向链表中的结点由数据和一个指向下一结点的指针组成,每个结点只包含一个指针域。
  • 双向链表。双向链表每个结点初数据域外有两个指针域,分别指向上一个结点和下一个结点。
  • 循环链表。循环链表在线性链表的基础上,表中最周一个结点的指针域指向头结点,整个链表形成一个环。

不同类型的链表在进行数据操作时有所不同。

2.1 链表的特点

(1)链表数据元素的存储单元可以是连续的也可以是不连续的,任何两个元素之间的存储位置没有固定的联系;
(2)链表中的每个数据元素都由数据域和指针域组成;
(3)不需要预分配空间,可自由扩展;

2.2 链表的优点

(1)任意位置插入和删除效率高。在任意位置插入和删除操作时,只需要改变前后元素的指针即可,不需要移动元素位置,时间复杂度为O(1)。
(2)内存利用率高。链表不需要提前分配内存空间,利用指针使其存储空间可以是非连续的,不会浪费内存。
(3)可自由扩展。链表的存储空间大小不固定,可根据需要随时进行插入和删除操作。

2.3 链表的缺点

(1)查找数据效率低。链表中数据元素不像数组中元素有下标,因此,在对链表中数据元素进行查找时,每一次都必须从头结点开始查找。
(2)单个元素占用空间大。每个元素结点都由指针域和数据域组成,相比数组元素来说占用空间更大。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值