千家信息网

java中队列和栈结构的示例分析

发表于:2026-11-05 作者:千家信息网编辑
千家信息网最后更新 2026年11月05日,这篇文章主要介绍了java中队列和栈结构的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一、队列结构1、基础概念队列是一种特殊
千家信息网最后更新 2026年11月05日java中队列和栈结构的示例分析

这篇文章主要介绍了java中队列和栈结构的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

一、队列结构

1、基础概念

队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。

2、特点描述

队列是一个有序列表,可以用数组或是链表来实现,遵循先进先出的原则。即:先进入队列的数据,会先取出;后进入队列的数据,要后取出;即FIFO原则。

入队列示意图:

出队列示意图:

通过上述两张图解,不难发现队列结构的一些特点:

  • 先进入的数据先出去;

  • 数据从队尾进入,从队首出去;

  • 基于数组描述队列下标变更频繁;

  • 出队列算法可以基于容器大小取模;

队列结构的核心是对容器内是否空、是否满标志的判断算法,即容器为空不可再取,容器已满无法再存;该算法结构在仓储领域的适应非常广泛。

3、消息队列

消息队列就是基于数据结构中的"先进先出"策略实现的,将消息以排队的方式放入队列中,然后出队列被消费:

有时候某类消息消费需要有顺序控制,即可以对消息中的公共ID做取模处理,即把某类消息都置于一个队列中即可。

4、API使用案例

LinkedList类实现Queue队列接口,因此可以基于LinkedList模拟队列效果。

import java.util.LinkedList;import java.util.Queue;public class M01_Queue {    public static void main(String[] args) {        // 入队列        Queue queue = new LinkedList<>();        queue.add("head") ;        queue.add("middle") ;        queue.add("tail") ;        // 当队列出数据之后,size是不断变化的        int queueSize = queue.size() ;        int loop = 0 ;        // 根据队列大小,不断出队列        while (loop < queueSize) {            System.out.println(queue.poll());            System.out.println(queue);            loop ++ ;        }    }}

二、栈结构

1、基础概念

栈(stack)又名堆栈,它是一种运算受限的线性表。限定仅在表尾进行插入和删除操作的线性表。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈(push),它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈(pop),它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。

2、特点描述

栈是一个先入后出的有序列表,添加和删除只能在栈顶端(Top)操作,另一端为固定的一端,称为栈底(Bottom)。

入栈示意图:

出栈示意图:

通过上述两张图解,栈结构的一些特点如下:

  • 进栈出栈都要通过栈顶端操作;

  • 进出栈都不移动栈底指针;

  • 进出栈都要移动栈顶指针;

基于栈的定义可知,最先放入栈中元素在栈底,最后放入的元素在栈顶,从栈容器中而删除元素刚好相反,最后放入的元素最先删除,最先放入的元素最后删除。

3、递归应用

栈在Java编程中的常见应用,(1)子程序的调用:在跳往子程序前,会将下个指令的地址存到堆栈中,直到子程序执行完后再将地址取出,退回到原来的程序中;(2)处理递归调用:和子程序的调用类似,除了存储下一个指令的地址外,也要将参数、区域变量等数据存入堆栈中。

4、API使用案例

Stack栈API是Vector的一个子类,它实现了一个标准的后进先出的栈,堆栈只定义了默认构造函数,用来创建一个空栈,堆栈除了包括由Vector定义的所有方法,也定义了自己的一些方法。

import java.util.Stack;public class M02_Stack {    public static void main(String[] args) {        // 入堆栈        Stack stack = new Stack<>() ;        stack.push("First") ;        stack.push("Second") ;        stack.push("Third") ;        int stackSize = stack.size() ;        int loop = 0 ;        // 根据栈大小,不断出栈        while (loop < stackSize) {            System.out.println(stack.pop());            System.out.println(stack);            loop ++ ;        }    }}

感谢你能够认真阅读完这篇文章,希望小编分享的"java中队列和栈结构的示例分析"这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!

队列 元素 结构 数据 堆栈 消息 容器 一端 子程序 特点 示意图 篇文章 线性 不断 地址 大小 最先 算法 先出 示例 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技海报 湖北九亚互联网络科技有限公司 为想互联网科技怎么样 互联网与科技发展 兼蜜互联网科技 安控科技rtu产品工业互联网 北京三清互联网科技 天速互联网络科技有限公司 互联网科技寓意 互联网时代科技改变生活 西安小鹰速贷互联网科技有限公司 科技大学互联网 上海钢联属于互联网科技股吗 珠海东科互联网科技有限公司 长沙渺峰互联网科技有限公司 第三届互联网大会安防黑科技 陕西彩京云互联网科技有限公司 长沙易易互联网科技有限公司 杭州科技互联网公司有哪些 承德科技产业互联网平台 互联网科技企业 易互联网科技有限公司 厦门千工互联网科技有限公司 互联网科技产业特征 互联网科技与大数据专业 互联网科技快讯热点 广州燕处互联网科技有限公司 长沙渺峰互联网科技有限公司 互联网科技大佬云集 互联网科技自媒体灵感
0