关于 栈 和 队列,你还在犯迷糊吗?

2023-11-09

从数据结构角度来看:

队列 都是一种特殊的线性结构,只是对 插入 / 删除 元素的方式做了限制

  • 栈:先进后出(push / pop / peek 的时间复杂度都是 O(1))
  • 队列:先进先出(add / remove / element 的时间复杂度都是 O(1))

栈 和 队列 继承关系图:(方法)

在这里插入图片描述
栈 其实是 一种特殊的 队列

1、队列:

队列:先进先出(FIFO)

有两个接口:

  • Queue:队列
  • Deque:双向队列
    在这里插入图片描述

(1)Queue:队列

常见方法:

返回类型 方法 解释
boolean add(E e) 将指定元素插入到队列中;若违反容量限制,则抛出异常
E element() 检索,但不删除,这个队列的头
E remove() 检索,并删除,此队列的头
boolean offer(E e) 将指定的元素插入到此队列中
E peek() 检索,但不删除,此队列的头;如果此队列为空,则返回 null
E poll() 检索,并删除,此队列的头;如果此队列为空,则返回 null

上面三种方法 和 下面三种方法的作用基本上一致的,只是遇到错误时行为不同,上面三种是抛出异常,而下面三种是返回 null

(2)Deque:双向队列

在这里插入图片描述

Deque:双向队列的特殊方法:
在这里插入图片描述
因为 Deque 继承了 Queue,所以 Queue 中的方法,Deque中也有,那么默认情况下,会选择哪种方法 ?

在这里插入图片描述
在这里插入图片描述

2、栈:

栈 :先进后出(FILO)

结构相当于 把队列给竖了过来
在这里插入图片描述

  • 进去的顺序 : ABCDE
  • 出来的顺序 : EDCBA

1、常用方法:实现 Deqeue 接口(其实就是 Deque 方法的变形)
在这里插入图片描述
peek : 查看栈顶元素

2、Java 早期还有一个专门的栈类 : Stack

返回类型 方法 解释
boolean empty() 判断 栈 是否为空
E push(E) 在栈顶添加元素
E peek() 查看栈顶元素,但不删除
E pop() 删除栈顶元素,并返回该元素
int search(Object o) 找到 o 对象 第一次 出现的位置
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

关于 栈 和 队列,你还在犯迷糊吗? 的相关文章

  • Ostu(大津法)二值化图像简介

    一 前言 Ostu方法又名最大类间差方法 通过统计整个图像的直方图特性来实现全局阈值T的自动选取 其算法步骤为 1 先计算图像的直方图 即将图像所有的像素点按照0 255共256个bin 统计落在每个bin的像素点数量 2 归一化直方图 也

随机推荐

  • java spring cloud 企业工程管理系统源码+二次开发+定制化服务

    鸿鹄工程项目管理系统 Spring Cloud Spring Boot Mybatis Vue ElementUI 前后端分离构建工程项目管理系统 1 项目背景 一 随着公司的快速发展 企业人员和经营规模不断壮大 为了提高工程管理效率 减轻
  • Scala中的apply方法

    1 apply的场景 Scala中实例化一个类 可以不用new 其原因 其实就是 apply 方法 具体原因 后边再讲 在上句中Scala 生成Array对象 会自动去调用 Array 这个伴生对象的 伴生类中的apply方法 Scala中
  • NetworkManager is not running

    nmtui 提示 NetworkManager is not running 启动 sudo service network manager start 提示 Redirecting to bin systemctl start netwo
  • python+vue+django考研信息查询辅导学习指南系统

    系统分为学生 管理员 导师三个角色 学生的功能是注册登陆系统 查看考研资讯 学校 专业 项目等信息 在线交流 联系客服 申请设备 导师对学生的申请设备进行审核 管理员对学生 资讯 导师 专业 学校 设备 项目等信息进行管理 管理员的主要功能
  • [机缘参悟-101] :IT人 - 遵从世界本源的样子,不带个人情感、道德、认知倾向,接纳一切,你就拥有无限的力量

    目录 道的本义 如来的本义 观音的本义 无为而治本质是顺势而为 儒家的本质 感悟 道的本义本质 天地的力量和运行规律 天地以万物为刍狗 是出自 道德经 第五十章的一句话 在这句话中 天地 指的是宇宙 万物 代表着宇宙中的一切生物和事物 而
  • 本地上传文件到github报错

    rejected master gt master non fast forward error failed to push some refs to https github com linanyways myProject git h
  • Error: L6218E: Undefined symbol vApplicationGetIdleTaskMemory (referred from tasks.o).

    我用的是F103ZET6的板子 移植成功后 编译出现两个错误是关于stm32f10x it c 里 void SVC Handler void void PendSV Handler void 两个函数的占用问题 随后编译出现以下两个问题
  • html iframe 传递数据,IFrame传入POST参数。

    我有一个API 比如http XXX test 只支持POST请求 需要传类似如下的参数才能拿到结果 id 12 userInfo name amy age 13 map fieldName AA mapName AAA fieldName
  • instanceof,isInstance,isAssignableFrom的区别,以及isAssignableFrom()详解

    一 isAssignableFrom详解 这个方法我觉得是不好理解 感觉命名不对劲 不知道是不是错觉 Class类的isAssignableFrom Class cls 方法 如果调用这个方法的class或接口 与 参数cls表示的类或接口
  • 群晖NAS和绿联NAS的Docker安装odoo16社区版和企业版教程

    社区版安装 1 在群晖后台安装好docker套件 并去控制面板 终端机和SNMP打开SSH功能 绿联nas的同样进管理界面安装docker套件 绿联打开SSH方法是在设备 远程调试下面 把远程调试打开 然后就会跳出来 验证码 然后下面这一段
  • form表单传值之Form表单对象

    function check var formData new FormData formData append name input name name val formData append pid select name pid va
  • win服务器创建文件夹命令行,怎样在windows的cmd命令行下创建删除文件和文件夹...

    在window下我们往往通过 右键 gt 新建 命令来创建文件和文件夹 但有时会遇到 以点开头的文件 比如 log 这种文件用鼠标新建是新建不了的 这时我们可以在DOS下用命令行来创建 所以在这里我将平时在dos里创建文件和文件夹的方法列举
  • 为什么应该用模块取代C/C++中的头文件?

    原文地址 http www csdn net article 2012 11 28 2812274 module replace C based languages headers 本文整理自Apple C 工程师Doug Gregor的演
  • 关于“异步复位,同步复位,异步复位同步释放”的理解

    文章目录 1 异步复位 2 同步复位 3 异步复位同步释放 今天好好理一理异步复位 同步复位 以及亚稳态中的异步复位同步释放 1 异步复位 一般让复位信号低电平有效 复位信号不受时钟的控制 只要复位信号有效 那么电路就会复位 对应的写法为
  • 十五、Redis——网络模型

    目录 1 1 用户空间和内核态空间 1 2 网络模型 阻塞IO 1 3 网络模型 非阻塞IO 1 4 网络模型 IO多路复用 总结 编辑 1 5 网络模型 信号驱动IO 1 6 网络模型 异步IO 1 7 同步和异步划分 1 8 Redis
  • React根据条件渲染不同的组件

    最近在做一个电商后台管理项目 碰到了一个要根据前面的条件不同来渲染不同的组件 如下图所示 要根据商品的分类来显示不同的商品属性 最开始以为简单的使用switch来判断条件即可 但是在react组件当中 一个函数是不能返回另一个函数的 这就导
  • linux 命令之nc

    nc使用示例 端口扫描nc v w 2 192 168 2 34 z 21 24nc connect to 192 168 2 34 port 21 tcp failed Connection refusedConnection to 19
  • 数字后端基本概念介绍——Track

    今天要给大家介绍的数字后端基本概念是Track Track是指走线轨道 和row一样 可以约束走线器的走线方向 信号线通常必须走在track上 Std Cell的高度通常用metal2 track pitch来表示 常用的 std cell
  • 出租车费

    题目描述 某市出租车计价规则如下 起步4公里10元 即使你的行程没超过4公里 接下来的4公里 每公里2元 之后每公里2 4元 行程的最后一段即使不到1公里 也当作1公里计费 一个乘客可以根据行程公里数合理安排坐车方式来使自己的打车费最小 例
  • 关于 栈 和 队列,你还在犯迷糊吗?

    我是目录 1 队列 1 Queue 队列 2 Deque 双向队列 2 栈 从数据结构角度来看 栈 和 队列 都是一种特殊的线性结构 只是对 插入 删除 元素的方式做了限制 栈 先进后出 push pop peek 的时间复杂度都是 O 1