数据结构(Java)——栈的简单应用

每天一个优秀提示词学习收藏 - 文本去AI化(四) 宝子们,今天不藏私啦!我把这段时间四处搜罗、潜心钻研出来的文本去AI化Prompt 提示词大礼包双手奉上,这可都是能让你的 AI 创作水平原地起飞的干货!走过路过不要错过,赶紧码住,开启你的 AI 创作进阶之旅吧! 阅读详情

栈

栈的定义

栈就是一个先入后出的有序列表,同时,栈是限制相信列表中元素的插入和删除只能在线性表的同一端进行的一种特殊的线性表。允许插入删除的一端也就是变化的一端,叫做栈顶,另一端是固定的一端就是栈底。当加入数据时,先加在栈底,然后依次栈顶往上走,删除数据时,也是有栈顶开始向外释放数据。其中学术名词出栈(POP)、入栈(PUSH)。

在这里插入图片描述

栈的应用场景

  1. 子程序的调用:在跳往子程序前,会先将下个指令的地址存到堆栈中,直到子程序执行完后再将地址取出,以回到原来的程序中。
  2. 处理递归调用:和子程序的调用类似,只是除了储存下一个指令的地址外,也将参数、区域变量等数据存入堆栈中。
  3. 表达式的转换[中缀表达式转后缀表达式]与求值(实际解决)。
  4. 二叉树的遍历。
  5. 图形的深度优先(depth - - first)搜索法。

这里将用数组来模拟栈的使用

在这里插入图片描述

定义栈

思路

就是先定义一个类,设置类的常见属性栈的大小maxsize、数组 == 栈、栈顶top,进一步完善构造器

这里注意一下,由于我们设置的栈顶是-1,所以当栈满是为最大容量-1,栈空时为-1.

代码如下

//定一个类表示栈结构
class ArrayStack{
	private int maxSize;//栈的大小
	private int[] stack;//数组,来模拟栈
	private int top = -1;//top表示栈顶,初始化为-1
	
	//构造器
	public ArrayStack(int maxSize) {
		this.maxSize = maxSize;
		stack = new int[this.maxSize];
	}
	
	public boolean isFull() {
		return top == maxSize-1;
	}
	public boolean isEmpty() {
		return top == -1;
	}
}

栈的显示

思路

栈的显示就是将这个数组循环遍历一下,值得注意的是,我们要遵循栈的原理,即先进后出,倒叙遍历数组

代码如下

//遍历栈,从栈顶显示数据
	public void list() {
		if(isEmpty()) {
			System.out.println("栈空,没有数据~~");
			return;
		}
		//需要从栈顶开始显示数据
		for(int i = top ;i >= 0; i--){
			System.out.printf("stack[%d]=%d", i, stack[i]);
		}
	}

入栈

思路

很简单,就是将栈顶top上移一个,将数据放入这个数组中top++ ; stack[top] = value ;

代码如下

//入栈-push
	public void push(int value) {
		//先判断栈是否满
		if(isFull()) {
			System. out. println("栈满");
			return;
		}
		top++ ;
		stack[top] = value ;
	}

出栈

思路

出栈如同入栈,将数据先保存出来,在将栈顶向下减一

代码如下

//出栈,就是将栈顶数据返回
	public int pop() {
		if(isEmpty()) {
			throw new RuntimeException("栈为空");
		}
		int value = stack[top];
		top--;
		return value;
	}
Haystack框架实战:从零构建企业级智能问答系统 自然语言处理(NLP)技术通过让计算机理解和生成人类语言,正在深刻改变信息检索与交互方式。其核心原理在于将文本转化为机器可处理的向量表示,并通过语义相似度计算实现精准匹配。这一技术价值在于能够从海量非结构化数据中快速提取精准信息,大幅提升知识获取效率。在工程实践中,检索增强生成(RAG)架构结合了密集向量检索与大语言模型生成能力,成为构建智能问答、知识库助手等应用的主流方案。该架构通过将用户查询与文档库进行语义匹配,并为大语言模型提供精准上下文,有效提升了回答的准确性与可追溯性。本文以Haystack这一生 阅读详情

相关推荐

halcon3D 点云拟合球体

halon3D 点云拟合球面

weixin_43213429的博客 1639

【数据结构Java版】Stack栈的妙用

栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出LIFO(Last In First Out)的原则。压栈:栈的插入操作叫做进栈/压栈/入栈,入数据在栈顶。出栈:栈的删除操作叫做出栈。出数据在栈顶。观察栈顶元素,而不动栈的结构:peekStack继承了Vector,Vector和ArrayList类似,都是动态的顺序表,不同的是Vector是线程安全的。

m0_63372226的博客 1023

JavaFx之集成FontAwesomeFX与JFoenix(十五)

本文详细介绍了如何在JavaFx项目中同时集成JFoenix和FontAwesomeFX,以创建现代化、美观的桌面应用界面。通过Maven依赖配置、动态代码创建和FXML静态声明两种方式,演示了如何将JFoenix的Material Design控件与FontAwesomeFX的丰富矢量图标完美结合,并提供了实战案例展示如何构建一个功能完善的现代化工具栏。

pepsi的博客 437

Java数据结构 | 栈及其应用

栈及相关应用详解

m0_56361048的博客 2389

无人机避障——4DMmvRadar三维点云坐标转换到无人机坐标系(三)

无人机避障——4DMmvRadar三维点云坐标转换到无人机坐标系(三)

weixin_45390670的博客 1869

计算机网络实验(华为eNSP模拟器)——第十章 Eth-Trunk(链路聚合)

目录一、Eth-Trunk的定义二、Eth-Trunk的工作模式(一)LACP模式1、定义2、命令(二)手工负载分担模式1、定义2、命令三、结语 一、Eth-Trunk的定义 Eth-Trunk是指设备的链路聚合,即将该设备的多个接口捆绑成一个接口,从而达到了增加带宽和提高可靠性的目的。我们要注意它是将多条物理链路,在逻辑上合并成一条,而不是串在一起。例我们将LSW1交换机S5700的三个端口(即GE0/0/1 、GE0/0/2、GE0/0/3)定义为一个Eth-Trunk接口与LSW2交换机相连,如下:

小宇y的博客 8417

Java数据结构—栈(Stack)

数据结构—栈

Rxq_Future的博客 583

Ubuntu升级遇到grub-efi-amd64-signed安装失败?3步搞定这个烦人错误

本文深度解析Ubuntu系统升级时grub-efi-amd64-signed安装失败并提示“cannot find EFI directory”错误的根本原因。该错误通常由EFI系统分区挂载异常、BIOS/UEFI引导模式不匹配或dpkg包状态死锁导致。文章提供了三步精准修复流程:首先检查并修复ESP分区挂载,其次处理dpkg依赖问题,最后针对传统BIOS系统提供适配方案,帮助用户安全彻底地解决这一常见升级难题。

r7s8t的博客 398

数据结构:栈

栈(Stack) 1. 概念 栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作 进行数据插入和删除操作的一端称为栈顶,另一端称为栈底 栈中的数据元素遵守后进先出LIFO(Last In First Out)的原则 压栈:栈的插入操作叫做进栈/压栈/入栈,入数据在栈顶 出栈:栈的删除操作叫做出栈。出数据在栈顶 栈的常用方法: 方法 解释 E push(E item) 压栈 E pop() 出栈 E peek() 查看栈顶元素 ..

qq_55996124的博客 677

STM32开发工具链选型:MDK、CubeIDE、VSCode与IAR深度对比

嵌入式开发工具链是连接软件逻辑与硬件行为的核心枢纽,其选择直接影响代码可靠性、调试效率与量产稳定性。从编译器优化能力、调试协议支持(如ARM CoreSight、SWO)、硬件抽象层级(寄存器/LL/HAL)到跨平台构建能力,不同工具在实时性保障、静态分析合规性(如MISRA-C)、WCET可预测性及生态开放度上存在本质差异。尤其在STM32平台,Keil MDK凭借深度调试能力成为HardFault定位首选,STM32CubeIDE依托图形化配置加速外设初始化,而VSCode+PlatformIO则以LS

weixin_42602368的博客 429

ESP32C6+ESP-IDF5.2实战:基于RS485的ModbusRTU从站开发与调试

本文详细介绍了基于ESP32C6和ESP-IDF5.2开发ModbusRTU从站的实战指南。涵盖硬件连接、协议实现、ESP-Modbus库移植、寄存器映射及调试技巧,帮助开发者快速构建稳定可靠的工业级RS485通信节点,并解决常见通信故障。

play7的博客 1188

栈及其应用

Java语言介绍栈数据结构

weixin_51550438的博客 2073

SAP MM ME21N保存前检查增强

想在ME21N保存前做一些数据检查, 可以做一个增强功能,  运行 CMOD 新增,   增强接口 输入 MM06E005  (  EXIT_SAPMM06E_012 ) ,在 NCLUDE ZXM06U43 .  里写代码功能。  例子如下: *&---------------------------------------------------------------------*

heng0757的专栏 1万+

基于java的数据结构学习——数组实现的栈以及简单应用

栈 Stack 栈是一种线性结构 相比数组,栈对应的操作是数组的子集 只能从一端添加元素,也只能从一端取出元素 这一端称为栈顶 栈是一种后进先出的数据结构 栈的应用 无处不在的Undo操作(撤销) 括号匹配(编译器) 程序调用的系统栈 funA(){ 1  ... 2  B() 3  ... } funB(){ ...

believe_s的博客 271

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

IEM模型,地表粗糙度模拟

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

java关于栈的数据结构简单应用

题目 有效的括号 给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 注意空字符串可被认为是有效字符串。 代码 public class Solution { public static boolean isValid(String s) { int n = s.length(); if (n % 2 == 1) {

qq_39602487的博客 183

基于java的数据结构学习——数组实现的栈以及简单应用C++实现

基于java的数据结构学习——数组实现的栈以及简单应用的 C++ 实现 源码:   // // Created by PC-Saw on 2019/1/3. // #ifndef DATA_STRUCTURE_ARRAYSTACK_H #define DATA_STRUCTURE_ARRAYSTACK_H #include "Stack.h" #include "MyArray.h"...

believe_s的博客 277

Java中的栈数据结构及其应用

Java中的栈数据结构及其应用

wrxfxdd的博客 825

Java数组模拟栈

package com.tentact.stack; import java.util.Scanner; public class ArrayStackDemo { public static void main(String[] args) { // 测试一下ArrayStack 是否正确 // 先创建一个ArrayStack对象->表示栈 ArrayStack stack = new ArrayStack(4); String key = ""; boolean loo

weixin_44256581的博客 155

数据结构与算法之栈(简单demo,主要是理解栈的特点)

什么是栈:先入后出的有序列表, 类似于弹夹压子弹, 最后一颗在栈顶, 第一个元素在栈底 为什么要用栈:栈可以解决的问题有 1. 子程序调用; 2.递归; 3.表达式的转换; 4.二叉树的遍历 快速入门: public class StackDemo { private int top; private int size; private final int[] stack; public StackDemo(int size) { this.size .

qq_35671159的博客 323

数据结构---栈的实现

数据结构—栈的实现 package com.stack; import java.util.Scanner; import java.util.regex.Matcher; public class stack { private int maxSize;// 栈最大容量 private int [] stacks; // 用数组模拟栈 private int front;// 指针 public stack(int maxSize) { this.maxSize = ma

mucheng_的博客 197

Java 实现栈

用你在数据结构与算法课上学到的知识写一个类Stack,并写一个应用程序来测试Stack(调用它的公共方法)。(——宁波大学计算机082Java老师王老师版权所有,百度没找到)  这么想的,实现栈,可以用链表实现(Java系统规定好的)(用import java.util.*引用);也可以用数组实现,或者甚至可以自己定义一个类,就像C++中的链表,定义元素类。 那么比如……i

Rachel Zhang的专栏 3743

【JAVA数据结构】Stack栈的深度剖析

JAVA栈的深度剖析,这瓜保熟💕

爱打酱油的新一的博客 884

Java中的栈操作

java中常用的栈操作 top赋初值是-1,入栈先做top++,出栈先赋值后top– 如图: 示例代码:public interface IStack { void push(Object obj) throws Exception; Object pop() throws Exception; boolean isEmpty();}```接口的实现 public cla

Hello,I am Waleee 1629

java 骑士游历 栈_Java-数据结构之栈练习

packagestruct;//late in first out,LIFO//泛型public class MyStack{private Node head = null;publicMyStack(){}publicMyStack(E element){Node newNode = new Node(element);head=newNode;}private class Node{E el...

weixin_42363154的博客 228

java 栈数据结构_Java数据结构和算法(四)——栈

前面我们讲解了数组,数组更多的是用来进行数据的存储,纯粹用来存储数据的数据结构,我们期望的是插入、删除和查找性能都比较好。对于无序数组,插入快,但是删除和查找都很慢,为了解决这些问题,后面我们会讲解比如二叉树、哈希表的数据结构。而本篇博客讲解的数据结构和算法更多是用作程序员的工具,它们作为构思算法的辅助工具,而不是完全的数据存储工具。这些数据结构的生命周期比数据库类型的结构要短得多,在程序执行期间...

weixin_39787792的博客 120

ADT: Stack 栈

ADT: Stack 栈 文章目录ADT: Stack 栈简介参考正文栈结构抽象接口实现要素Java 实现C++ 实现结语 简介 本篇开始介绍 ADT(Abstract Data Type 抽象数据结构),在计算机科学中除了基本类型如 int、long、char 等,大多数的程序还需要用到其他集成更多细节的抽象数据结构,如栈(Stack)、队列(Queue)、树(Tree)、图(Graph) 等,许多复杂算法的实现必须借助特定的数据结构才能够实现。 本篇将从最简单的栈(Stack)结构开始介绍,虽然栈的结构

超悠閒的博客 2875

Java实现数组栈

简简单单的Java实现一个栈 //栈的数组实现 public class ArrayStack { private int maxSize; private int top= -1; private int[] stack; // 初始化栈 public ArrayStack(int maxSize){ this.maxSize= maxSize; stack= new int[maxSize]; } // 判断栈是否已满

Andy_yanu的博客 209

数据结构之栈

数据结构之栈:package stack;/**

cullinans的博客 398
上一篇: 数据结构(Java)——约瑟夫问题
下一篇: 数据结构(Java)——栈实现简单计算器
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

痞子三分冷ゾジ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值