2-图文打造LeeCode算法宝典-数据结构和算法

本文详细介绍了数组的数据结构特点,包括随机访问、添加和删除操作及其时间复杂性,并对比了栈与队列的特性,如LIFO和FIFO原则。探讨了它们在实际编程中的应用和操作限制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

数组

数组也是数据呈线性排列的一种数据结构

Blue、Yellow、Red作为数据存储在数组中。

结构

数据按顺序存储在内存的连续空间内

随机访问

由于数据是存储在连续空间内的,所以每个数据的内存地址(在内存上的位置)都可以通过数组下标算出,我们也就可以借此直接访问目标数据(这叫作“随机访问”)。

添加

将Green添加到第2个位置上。

首先,在数组的末尾确保需要增加的存储空间

在这里插入图片描述

为了给新数据腾出位置,要把已有数据一个个移开。首先把Red往后移。

在这里插入图片描述

然后把Yellow往后移。

在这里插入图片描述

最后在空出来的位置上写入Green。

删除

删掉目标数据(在这里指Green)。

然后把后面的数据一个个往空位移。先把Yellow往前移。

在这里插入图片描述

接下来移动Red。

最后再删掉多余的空间。这样一来Green便被删掉了。

特点

假设数组中有n个数据,由于访问数据时使用的是随机访问(通过下标可计算出内存地址),所以需要的运行时间仅为恒定的O(1)。

但另一方面,想要向数组中添加新数据时,必须把目标位置后面的数据一个个移开。所以,如果在数组头部添加数据,就需要O(n)的时间。删除操作同理。

栈也是一种数据呈线性排列的数据结构,不过在这种结构中,我们只能访问最新添加的数据。

栈这种最后添加的数据最先被取出,即“后进先出”的结构,我们称为Last In First Out,简称LIFO。

入栈

栈中添加了数据Green

数据Red入栈

出栈

从栈中取出数据时,是从最上面,也就是最新的数据开始取出的。这里取出的是Red。

取出Green

特点

与链表和数组一样,栈的数据也是线性排列,但在栈中,添加和删除数据的操作只能在一端进行,访问数据也只能访问到顶端的数据。想要访问中间的数据时,就必须通过出栈操作将目标数据移到栈顶才行。

队列

队列中添加和删除数据的操作分别是在两端进行的

像队列这种最先进去的数据最先被取来,即“先进先出”的结构,我们称为First In First Out,简称FIFO。

现在队列中只有数据Blue

入队

队列中添加了数据Green

在这里插入图片描述

数据Red也入队

出队

从队列中取出(删除)数据时,是从最下面,也就是最早入队的数据开始的。

在这里插入图片描述

取出Green

特点

与栈类似,队列中可以操作数据的位置也有一定的限制。在栈中,数据的添加和删除都在同一端进行,而在队列中则分别是在两端进行的。队列也不能直接访问位于中间的数据,必须通过出队操作将目标数据变成首位后才能访问。

其他数据结构见下篇文章。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xianghan收藏册

极简精品作,一分也是一份鼓励哦

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值