数据结构 -- 栈(stack)队列 (queue)

Java~数据结构(三)~栈和队列(Stack\Queue\Deque的常用方法和模拟实现一个栈和队列等) 【代码】Java~数据结构(三)~栈和队列(Stack\Queue\Deque的常用方法和模拟实现一个栈和队列等) 阅读详情

数据结构 – 栈(stack)

介绍

栈是限制插入和删除只能在同一个位置上进行的表,该位置是表的末端,叫做栈顶(top)。栈结构是一种后进先出的(LIFO)的数据结构。对栈的基本操作只有进栈(push)和出栈(pop)两种,进栈相当于插入,出栈相当于删除最后的元素。

图片描述

栈的运行图

代码描述
/**
* @Description: 数据结构 -- 栈
* @Author: Zero
* @Date: 2019/11/28
*/
public class MyStack {

   private LinkedList<String> linkedList;

   public MyStack () {
       linkedList = new LinkedList<>();
   }

   public void push (String value) {
       linkedList.add(value);
       System.out.println(value + "进栈");
   }

   public void pop () {
       int size = linkedList.size();
       if (size > 0) {
           System.out.println(linkedList.get(size - 1) + "出栈");
           linkedList.remove(size - 1);
       } else {
           System.out.println("该栈已经为空");
       }
   }

   public void getStack () {
       System.out.println("当前栈中数据");
       System.out.println("--------------");
       for (String s : linkedList) {
           System.out.println(s);
       }
       System.out.println("--------------");
   }


   public static void main(String[] args) {
       MyStack stack = new MyStack(); // 创建一个栈结构

       stack.push("A"); // 开始进栈啦
       stack.push("B");
       stack.push("C");
       stack.push("D");
       System.out.println("");

       stack.getStack(); // 获取当前栈中的数据
       System.out.println("");

       stack.pop(); //出栈
       stack.pop();
       System.out.println("");

       stack.getStack();

   }
}
运行结果

在这里插入图片描述

数据结构 – 队列(queue)

介绍

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

图片描述

在这里插入图片描述

代码描述
/**
* @Description: 数据结构 -- 队列
* @Author: Zero
* @Date: 2019/11/28
*/
public class MyQueue {

   private LinkedList<String> linkedList;

   public MyQueue () {
       linkedList = new LinkedList<>();
   }

   public void insert (String value) {
       linkedList.add(value);
       System.out.println(value + "进队列");
   }

   public void remove () {
       int size = linkedList.size();
       if (size > 0) {
           System.out.println(linkedList.get(0) + "出队列");
           linkedList.remove(0);
       } else {
           System.out.println("该队列为空");
       }

   }
   public void getQueue () {
       System.out.println(linkedList);
   }
   public static void main(String[] args) {
       MyQueue myQueue = new MyQueue();

       myQueue.insert("A");
       myQueue.insert("B");
       myQueue.insert("C");
       myQueue.insert("D");

       myQueue.getQueue();

       myQueue.remove();

       myQueue.getQueue();
   }
}
运行截图

在这里插入图片描述


结语

小编是一枚Java Coder,业余写文章,现主营微信公众号《Java患者》,喜欢的话关注我的公众号或者加我微信我们一起学习Java
在这里插入图片描述

JetBrains Air:多Agent协同的IDE运行时架构解析 IDE智能编程正从单模型增强迈向多Agent协同范式。多Agent架构通过职责分离、上下文精简与运行时隔离,显著提升代码生成稳定性与合规性;其核心依赖轻量级嵌入式运行时(如ARL),支持AST级内存共享、eBPF安全拦截与毫秒级冷启动。该架构天然适配本地化部署、离线开发与高安全合规场景(如PCI-DSS、金融内网),并为Java/Python/TS等语言提供可扩展的规则驱动开发流水线。JetBrains Air正是这一技术路径的工程化落地代表。 阅读详情

相关推荐

Mission Planner连接Autopilot保姆级教程:从USB到无线全搞定

本文提供Mission Planner连接Autopilot的全面指南,涵盖USB直连、无线数传、蓝牙适配等多种连接方案。详细讲解驱动安装、波特率匹配、性能优化等关键步骤,并分享多链路冗余配置与故障转移的高阶技巧,助你快速解决连接问题。

weixin_28455801的博客 376

定义一个栈(Stack)类,用于模拟一种具有后进先出(LIFO)特性的数据结构

class Stack: def __init__(self, stack): self.stack = [] for x in stack: self.push(x) def isEmpty(self): return not self.stack def push(self, obj): ...

Einstellung的博客 2742

UE 动态获取 资源缩略图 下载到本地或返回图片信息

UE 动态加载资源缩略图 返回图片信息或保存到本地

qq_46080252的博客 1935

stack size

[root@12c-1~]#ulimit-a corefilesize(blocks,-c)0 datasegsize(kbytes,-d)unlimited schedulingpriority(-e)0 filesize(blocks,-f)u...

weixin_34323858的博客 774

DC-DC电源PCB布局实战:从EMI优化到热管理

本文深入探讨了DC-DC电源PCB布局的核心实战技巧。文章从分析电流环路入手,强调通过优化“黄金三角”布局以最小化环路面积,从而有效抑制EMI并提升效率。详细阐述了功率器件摆放、地线分割、敏感信号布线、电感下方铺铜策略以及热管理设计等关键步骤,为工程师提供了一套从理论到实践的完整布局指南。

z5a6b的博客 720

【OpenClaw从入门到精通】第26篇:从0到1构建OpenClaw二次发行版——企业专属AI平台实战指南(2026实测)

本文基于OpenClaw 2026.3.7开源内核,聚焦企业级AI平台的二次发行构建,从技术原理、实操流程到商业落地提供完整方法论。核心围绕“内核层-能力层-产品层”三层架构,详解源码编译、私有化部署、企业级特性开发(数据合规、国产化适配、业务系统集成)、产品化包装等关键步骤,并通过审计行业“智审助手”虚拟实战案例具象化落地路径。文章兼顾新手入门与进阶提升,提供可直接复用的代码、配置文件及执行结果,解决企业对AI Agent“开箱即用”“数据不出域”“业务适配”的核心诉求,助力开发者快速打造企业专属AI平台

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 709

Linux零碎记录之ulimit【堆栈大小、stack size、进程数限制、文件句柄限制、linux用户空间限制】...

写了个小程序 本来打算写个hash表的,但是出现“段错误” #include&lt;stdio.hstruct a{ char a[4096]; char a1[4096]; char a2[4096]; char a3[4096];};int main(){ struct a b[1500]; int i=0; for(;i&lt;1500;i++...

weixin_33785972的博客 1212

YOLOv8改进策略【卷积层】| GnConv:一种通过门控卷积和递归设计来实现高效、可扩展、平移等变的高阶空间交互操作

HorNet: 利用递归门控卷积实现高效高阶空间交互GnConv(Recursive Gated Convolution,递归门控卷积)

Limiiiing的博客 323

数据结构与算法实验1——线性表的应用之栈与队列

线性表的应用之栈与队列 一、目的要求 1.掌握栈、队列的思想及其存储实现。 2.掌握栈、队列的常见算法的程序实现 二、实验内容 1.采用链式存储实现栈的初始化、入栈、出栈操作。 2.采用顺序存储实现栈的初始化、入栈、出栈操作。 3.采用链式存储实现队列的初始化、入队、出队操作。 4.采用顺序存储实现循环队列的初始化、入队、出队操作。 5.在主函数中设计一个简单菜单,调用上述算法 三、实验说明 1.顺序栈类型定义 const int MAX=20 ; // 栈的最大值 typedef struct { Ele

每天八杯水的博客 1166

【GlobalMapper精品教程】070:专题地图制作完整操作教程

与其它GIS软件一样,Globalmapper也可以制作出漂亮的地图,本文讲解专题地图制作完整操作流程。

智慧空间实验室 3746

AutoSAR MemMap模块详解及使用注意事项

在本文中,我们将深入探讨MemMap模块的实例解析,并介绍在使用该模块时需要注意的一些事项。在上述代码中,我们使用了MEMMAP_START_SEC_VAR_32BIT和MEMMAP_START_SEC_CODE来定义MemMap区域的起始位置,使用MEMMAP_STOP_SEC_VAR_32BIT和MEMMAP_STOP_SEC_CODE来定义MemMap区域的结束位置。1.合理划分MemMap区域:根据实际需求,合理划分MemMap区域,将不同类型的变量放置在不同的区域中,以便于管理和访问。

weixin_50547796的博客 2529

stack_size和heap_size大小设置

 裸机程序里面这两个值  在程序中我要怎么计算才能知道分配多少合适?1,Stack Size,一般小工程0X400足够,我们综合实验才设置0X1000就够用,所以默认无需设置太大。2,Heap Size,如果没有用到标准库的malloc,就是废物,纯属浪费内存,所以直接设置为0即可。...

anbaixiu的博客 4万+

SLAM Cartographer(18)后端优化问题求解器

了解经过闭环检测构建了子图与节点之间的约束之后,通过后端优化求解器进行优化求解。核心是基于Ceres库进行SPA(Sparse Pose Adjustment)的优化方法,把后端优化问题描述成为一个最小二乘的问题求解

氢键H-H 5679

Java 数据结构:栈、队列、双向队列(Stack、Queue、Deque)

本文介绍了Java中栈、队列、双向队列的实现,总结了Stack类、Queue接口和Deque接口中方法的用法和区别。

Hanx_404的博客 1428

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

【数据结构】栈Stack与队列Queue

本文介绍了栈和队列两种线性数据结构及其实现。栈是一种后进先出(LIFO)结构,支持压栈(push)和出栈(pop)操作,Java中可通过Stack类实现。队列是一种先进先出(FIFO)结构,支持入队(offer)和出队(poll)操作,Java中通过Queue接口和LinkedList类实现。文中详细对比了二者的特点、操作方法和底层实现,并提供了基于数组和链表的模拟实现代码,帮助理解其核心原理和应用场景。

记录了从0学习Java技术栈的日常 1660

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Java数据结构栈和队列(Stack和Queue详解)

栈和队列是数据结构中重要的存储方式,也是建立在Arrarylist和LinkedList之上的数据结构。本猿在C语言阶段就已经详细剖析过栈和队列,不熟悉的小伙伴可以翻看之前的博客内容!Java阶段一方面剖析Java中自带的Stack和Queue中的各种方法,另一方面也是重点重新再次实现栈和队列, 并发掘和C语言中的区别。

多敲代码防脱发的博客 1571

Java数据结构——栈(Stack)和队列(Queue)

栈概念:着重阐述栈的定义、特性,如后进先出(LIFO)原则,以及在实际场景中的应用场景概述,比如函数调用栈、表达式求值等。讲解创建栈对象的方式,不同编程语言中栈的初始化方法等。介绍入栈(push)、出栈(pop)、获取栈顶元素(peek)等常见操作方法的功能和使用方式。模拟实现:描述如何使用基础数据类型或其他数据结构来模拟栈的功能,包括实现思路和关键代码逻辑。 队列概念:阐释队列的定义、特点,即先进先出(FIFO),以及其在诸如任务排队、广度优先搜索等场景中的应用。

Yoko_999的博客 729

数据结构之栈Stack与队列Queue

数据结构之栈Stack与队列Queue 一、栈Stack 1、简介 栈相比于数组,栈对应的操作时数组的子集,也是一种线性结构 2、特点 (1)只能从一端添加元素,也只能从一端取出元素,成为栈顶,像玻璃瓶 (2)后进先出的数据结构Last in First Out(LIFO) 3、应用 (1)撤销undo 程序调用的系统栈,记录程序调用过程,将先执行的放在栈底,执行完后的以此退出 (2)括号匹配 栈...

Bug君的博客 601

Java 【数据结构】 栈(Stack)和队列(Queue)【神装】

在学习 Java 中的栈(Stack)和队列(Queue)这两种经典数据结构时,我深刻体会到它们的重要性和应用广泛性。通过掌握栈和队列的基本操作,如入栈、出栈、入队、出队,我加深了对数据结构的理解。在实践中,我意识到需要关注空间复杂度和时间复杂度的问题,尤其在处理大规模数据集时。异常处理也是学习中的重要环节,确保程序能够正常处理各种边界情况。

2302_79806056的博客 5570

数据结构--栈(Stack)& 队列(Queue)

本文介绍了Java中队列(Queue)和栈(Stack)两种数据结构。队列是FIFO(先进先出)结构,常用实现类有LinkedList、PriorityQueue和ArrayDeque,适用于排队系统、BFS等场景;栈是LIFO(后进先出)结构,可用Stack类或ArrayDeque实现,应用于函数调用栈、表达式求值等场景。文章对比了两种结构的特点,推荐使用ArrayDeque实现队列和栈以获得更好性能。

你我约定有三的博客 1129

[java数据结构] 栈(Stack)和队列(Queue)

栈(Stack)是一种后进先出(LIFO,Last In First Out)的数据结构,类似于一摞盘子,最后放入的盘子最先取出。栈的操作包括入栈(push)和出栈(pop),只能在栈顶进行操作,不支持随机访问。栈常用于实现函数调用、表达式求值、括号匹配等场景。 队列(Queue)是一种先进先出(FIFO,First In First Out)的数据结构,类似于排队等候的过程,先到先得。队列的操作包括入队(offer)和出队(poll),元素从队列的前端出队,从队列的后端入队。队列常用于实现广度优先搜索、

weixin_55250388的博客 2026

【数据结构】Java数据结构深度解析:栈(Stack)与队列(Queue)完全指南

本文详细介绍了栈(Stack)、队列(Queue)和双端队列(Deque)三种线性数据结构。主要内容包括:1. 栈的核心概念与Java实现,包括基于数组和链表的模拟实现,以及括号匹配、浏览器历史等应用场景。2. 队列的基本原理与循环队列实现,重点分析了线程池任务队列和BFS算法应用。3. 双端队列的灵活操作及其在滑动窗口问题中的应用。4. 经典面试题实现,如用队列实现栈、用栈实现队列和最小栈问题。5. 性能对比与选择指南,给出了实际开发中的使用建议。文章通过丰富的代码示例展示了这些数据结构的具体实现和应用场

2301_79949064的博客 1863

java版数据结构:深入理解栈和队列:数据结构与应用(vector,stack,queue)

数据结构中的动态数组,栈,队列,双端队列的基础知识

2303_80025768的博客 1473

数据结构篇——包(bag),栈(stack),队列(queue)

前言 本篇博文想要介绍的是三种功能单一且最为基础的数据结构:包,栈,队列。相信阅读此篇博客的大部分读者都能够手撕或者直接口述出这三种数据结构的实现方法。本篇博文将会从一般实现方式入手,通过分析优劣点来进一步优化三种数据结构的实现方法。 包,栈,队列的简介 正如前言中所说。包,栈,队列是功能单一的数据结构。 包:一种只能塞值不能取值的结构。即这个类对外暴露的api永远只有add(),没有get()。...

秋千不会坠的博客 2705

数据结构:栈和队列(Stack & Queue)【详解】

栈和队列知识框架 栈 一、栈的基本概念 1、栈的定义 栈(Stack):是只允许在一端进行插入或删除的线性表。首先栈是一种线性表,但限定这种线性表只能在某一端进行插入和删除操作。 栈顶(Top):线性表允许进行插入删除的那一端。 栈底(Bottom):固定的,不允许进行插入和删除的另一端。 空栈:不含任何元素的空表。 栈又称为先进先出(Last In First Out)的线性表,简称LIFO结构 2、栈的基本操作 InitStack(&S):初始化一个空栈S。 StackEmpty(S):

UniqueUnit的博客 31万+

【数据结构】栈(Stack)和队列(Queue)

栈和队列都是一种特殊的线性表。栈的特点:后进先出,只能在表尾进行插入和删除。队列的特点:先进先出,只能在表头删除,在表尾插入。它们都可以用顺序存储和链式存储的方式。栈常用顺序存储结构即数组的方式,因为数组的尾插尾删效率高,但可能会存在频繁开辟内存空间和内存空间浪费的问题。而栈的链式存储结构,解决了空间浪费的问题,但每个节点都存放一个指针域,也会存在一定的内存开销,并且在每次申请和释放节点的过程中也存在一定的时间开销。队列常用链式存储结构即链表的方式,

炸掉地球的博客 5535

【数据结构笔记】栈Stack、队列Queue

LIFO结构,函数递归调用的底层实现。

Resurgence03的博客 1206
上一篇: 数据结构 -- stack、queue
下一篇: SpringMvc 入一下门先
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值