先进先出算法_结构与算法(02):队列和栈结构
一、队列结构1、基础概念
队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。2、特点描述
队列是一个有序列表,可以用数组或是链表来实现,遵循先进先出的原则。即:先进入队列的数据,会先取出;后进入队列的数据,要后取出;即FIFO原则。入队列示意图:
出队列示意图:
通过上述两张图解,不难发现队列结构的一些特点:
- 先进入的数据先出去;
- 数据从队尾进入,从队首出去;
- 基于数组描述队列下标变更频繁;
- 出队列算法可以基于容器大小取模;
队列结构的核心是对容器内是否空、是否满标志的判断算法,即容器为空不可再取,容器已满无法再存;该算法结构在仓储领域的适应非常广泛。3、消息队列
消息队列就是基于数据结构中的“先进先出”策略实现的,将消息以排队的方式放入队列中,然后出队列被消费:
有时候某类消息消费需要有顺序控制,即可以对消息中的公共ID做取模处理,即把某类消息都置于一个队列中即可。4、API使用案例
LinkedList类实现Queue队列接口,因此可以基于LinkedList模拟队列效果。
二、栈结构1、基础概念
栈(stack)又名堆栈,它是一种运算受限的线性表。限定仅在表尾进行插入和删除操作的线性表。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈(push),它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈(pop),它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。2、特点描述
栈是一个先入后出的有序列表,添加和删除只能在栈顶端(Top)操作,另一端为固定的一端,称为栈底(Bottom)。入栈示意图:
出栈示意图:
通过上述两张图解,栈结构的一些特点如下:
- 进栈出栈都要通过栈顶端操作;
- 进出栈都不移动栈底指针;
- 进出栈都要移动栈顶指针;
基于栈的定义可知,最先放入栈中元素在栈底,最后放入的元素在栈顶,从栈容器中而删除元素刚好相反,最后放入的元素最先删除,最先放入的元素最后删除。3、递归应用
栈在Java编程中的常见应用,(1)子程序的调用:在跳往子程序前,会将下个指令的地址存到堆栈中,直到子程序执行完后再将地址取出,退回到原来的程序中;(2)处理递归调用:和子程序的调用类似,除了存储下一个指令的地址外,也要将参数、区域变量等数据存入堆栈中。4、API使用案例
Stack栈API是Vector的一个子类,它实现了一个标准的后进先出的栈,堆栈只定义了默认构造函数,用来创建一个空栈,堆栈除了包括由Vector定义的所有方法,也定义了自己的一些方法。
先进先出算法_结构与算法(02):队列和栈结构相关推荐
- 【Matlab】智能优化算法_蜻蜓优化算法DA
[Matlab]智能优化算法_蜻蜓优化算法DA 1.背景介绍 2.灵感 3.公式推导 3.1 勘探和开发操作 4.算法流程图 5.文件结构 6.伪代码 7.详细代码及注释 7.1 DA.m 7.2 d ...
- 【Matlab】智能优化算法_蚁狮优化算法ALO
[Matlab]智能优化算法_蚁狮优化算法ALO 1.背景介绍 2.基本思想 3.公式推导 3.1 ALO算法的运算符 3.2 蚂蚁的随机游动 3.3 困在蚂蚁坑里 3.4 修建陷阱 3.5 蚂蚁划向 ...
- 【Matlab】智能优化算法_灰狼优化算法GWO
[Matlab]智能优化算法_灰狼优化算法GWO 1.背景介绍 2.基本思想 2.1 等级制度 2.2 狩猎方式 3.公式推导 3.1 社会等级制度 3.2 包围猎物 3.3 包围猎物 3.4 攻击猎 ...
- 结构与算法(02):队列和栈结构
本文源码:GitHub·点这里 || GitEE·点这里 一.队列结构 1.基础概念 队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入 ...
- fifo算法_前端进阶算法6:一看就懂的队列及配套算法题
引言 队列这种数据结构,据瓶子君了解,前端需要了解的队列结构主要有:双端队列.滑动窗口,它们都是算法中是比较常用的数据结构. 因此,本节主要内容为: 数据结构:队列(Queue) 双端队列(Deque ...
- 408考研数据结构与算法之数组、链表、队列、栈知识点和算法详细教程(更新中)
第一章:数据结构与算法概述 因为数据结构作为计算机专业的专业基础课程,是计算机考研的必考科目之一,如果打算报考计算机专业的研究生,你必须学好它. 数据结构是计算机软考.计算机等级考试等相关考试的必考内 ...
- 尚硅谷01 数据结构与算法_数据结构与算法介绍+稀疏数组
数据结构与算法的关系 几个实际编程中遇到的问题 要想写出优秀的算法,首先应该能读懂别人写好的算法. 将生活中遇到的实际问题,使用程序来解决 线性结构和非线性结构 线性结构和非线性结构的关系: 数据结构 ...
- python数据结构算法_数据结构与算法(Python)
数据结构与算法(Python) Why? 我们举一个可能不太恰当的例子: 如果将最终写好运行的程序比作战场,我们码农便是指挥作战的将军,而我们所写的代码便是士兵和武器. 那么数据结构和算法是什么?答曰 ...
- prim算法_数据结构与算法
根据MOOC上课程总结,文章目录为: 一.引论 数据结构的基本概念 数据的逻辑结构和存储结构 算法及其时间复杂度 时间复杂度及应用 二.线性表 线性表的概念及顺序存储 单链表的概念及其基本操作 建立单 ...
最新文章
- python 易错总结
- 5.QT5中的connect的实现
- matlab中矩阵的左除右除
- java 正则表达式 提取ip_java正则表达式提取地址中的ip和端口号
- python 读取内存_python内存读写
- C++ list 函数用法整理
- HDU1881 毕业bg【0-1背包】
- Bailian2693 最远距离【序列处理】
- 工程项目成本费用明细表_项目成本费用明细表
- 隆重推荐:公民税权手册
- 汽车故障诊断技术【8】
- DoS和DDoS攻击
- 计算机英语专业摘要,推荐:计算机毕业论文英文摘要的写作方法
- Facebook改名,元宇宙非区块链不可
- php html转ubb,PHP HTML转UBB函数
- 【MyBatis(-Plus)】一对一、一对多查询
- 今日,华为重磅发布6大创新产品及服务!
- winpe修复计算机无法启动,巧用PE修复系统启动故障
- xgboost 怎么读_你真的会读书了吗?五本书让你会读书,读好书,好读书!
- Duang~MySQLi 扩展库来袭
热门文章
- php无限分类原理,php 递归无限级分类原理和实现代码
- dell笔记本指示灯闪烁_带你认识电脑电源状态指示灯不同亮度不同含义
- python 树结构三方包_python第三方库---BeautifulSoup库(搬运)
- mysql增删改查的命令_MySql增删改查命令
- python代码打开可执行文件_将自己的Python代码打包成exe文件(更换设备可运行的)...
- web页面刷不出来 白色_今日头条连接超时刷不出来解决方案
- Spring5.0 Kafka2.11
- 漫画 | 程序员的悲哀是什么?
- 开源 | App 开发神仙工具:帮你抓 Bug
- 如何在windows系统上安装Tensorflow Object Detection API?