数据结构初见2(栈和队列)

本文主要介绍了栈和队列两种线性数据结构。栈的特点是先进后出,只能从栈顶操作;队列先进先出,从队尾添加、队首取出元素。还分析了它们的实现及时间复杂度,提到用循环队列解决数组队列问题,最后介绍了特殊数据结构单调栈。

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

一、栈 Stack

1、 栈也是一种线性数据结构
规定只能从栈顶添加元素,也只能从栈顶取出元素

最大特点:先进后出

2.栈的具体实现
Stack< E >
void push(E)
E pop()
E peek()
int getSize()
boolean isEmpty()
3、时间复杂度分析
在这里插入图片描述

二、队列(Queue)

1、队列也是一种线性数据结构
只能从一端(队尾)添加元素,从另一端(队首)取出元素

队列是一种先进先出的数据结构

2、队列的实现
Queue
void enqueue(E)
E dequeue()
E getFront()
int getSize()
boolean isEmpty()

3、数组队列的问题
其中dequeue()操作的时间复杂度为O(n),原因时在出队时,数组后面的元素都要进行前移。

为了解决前移的问题,可以使用front记录队首位置,使用tail记录队尾位置,这就是循环队列

在这里插入图片描述
情况3:
在这里插入图片描述

4、循环队列的复杂度分析

在这里插入图片描述
5、补充:
使用Stream的方式遍历
(1)、将数组转换为stream,有两种方式: Stream.of(arr),Arrays.stream(arr)
(2)、使用Arrays.stream()转换时,如果是包装类,转换后的类型为Stream,基础类型,转换后为IntStream
(3)、使用Stream.of()转换时,如果是包装类,转换后的类型为Stream,基础类型,转换后为Stream<int[]>

6、特殊的数据结构:单调栈

单调栈实际上还是栈,只是利用了一些巧妙的逻辑,使得每次新元素入栈后,栈内元素都保持单调

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值