当前位置: 首页 > news >正文

数据结构——用数组实现栈和队列

目录

用数组实现栈和队列

一、数组实现栈

1.stack类

2.测试

二、数组实现队列

1.Queue类

2.测试


查询——数组:数组在内存中是连续空间

增删改——链表:链表的增删改处理更方便一些

满足数据先进后出的特点的就是栈,先进先出就是队列

用数组实现栈和队列

一、数组实现栈
1.stack类
public class StackDemo {private int[] arr;private int i=-1;public StackDemo(int size) {arr=new int[size];}//入栈public void add(int value) {//栈满判断if(i==arr.length-1) {System.out.println("stack full!");return;}i++;arr[i]=value;}//出栈public int get() {//栈空判断if(i==-1) {System.out.println("stack empty");return -1;}int data=arr[i];i--;return data;}
}

main方法调用

package 数据结构;public class test2 {public static void main(String[] args) {StackDemo stack=new StackDemo(5);stack.add(1);stack.add(2);stack.add(6);stack.add(3);stack.add(9);System.out.println(stack.get());System.out.println(stack.get());System.out.println(stack.get());System.out.println(stack.get());System.out.println(stack.get());System.out.println(stack.get());}
}
2.测试

栈满测试

 栈空测试


二、数组实现队列

注意观察,入队过程中我们使用到另一个“幽灵指针”,这是通过“r%arr.length”来实现的,本质上r的大小是不变的。

1.Queue类
package 数据结构;public class QueueDemo {private int arr[];private int c=0;private int r=0;public QueueDemo(int size) {arr=new int[size];}public void add(int value) {// 栈满判断if(r-c==arr.length) {System.out.println("Queue full!");return;}arr[r%arr.length]=value;r++;}public int get() {// 栈空判断if(r==c) {System.out.println("Queue empty!");return -1;}int data=arr[c%arr.length];c++;return data;}}

 main方法调用

package 数据结构;public class test3 {public static void main(String[] args) {QueueDemo queue=new QueueDemo(5);queue.add(1);queue.add(2);queue.add(6);queue.add(3);queue.add(9);queue.add(10);System.out.println(queue.get());System.out.println(queue.get());System.out.println(queue.get());System.out.println(queue.get());System.out.println(queue.get());queue.add(4);System.out.println(queue.get());System.out.println(queue.get());}
}
2.测试

相关文章:

数据结构——用数组实现栈和队列

目录 用数组实现栈和队列 一、数组实现栈 1.stack类 2.测试 二、数组实现队列 1.Queue类 2.测试 查询——数组:数组在内存中是连续空间 增删改——链表:链表的增删改处理更方便一些 满足数据先进后出的特点的就是栈,先进先出就是队列…...

vue3typescript,shims-vue.d.ts中declare module的vue声明

webpack已经有了vue-loader这些loader了,为什么还需要declare module *.vue’呢? declare module 是为了告诉 tsc 这是一个“模块”。 如果不声明, IDE 里因为 tsc 类型检查, lint 会标红。 但vue-loader 是在 Webpack 构建阶段使…...

C/C++基础知识复习(30)

1) 什么是 C 中的 Lambda 表达式?它的作用是什么? Lambda 表达式: 在 C 中,Lambda 表达式是一种可以定义匿名函数的机制,可以在代码中快速创建一个内联的函数对象,而不需要显式地定义一个函数。Lambda 表…...

【NLP 1、人工智能与NLP简介】

人人都不看好你,可偏偏你最争气 —— 24.11.26 一、AI和NLP的基本介绍 1.人工智能发展流程 弱人工智能 ——> 强人工智能 ——> 超人工智能 ① 弱人工智能 人工智能算法只能在限定领域解决特定的问题 eg:特定场景下的文本分类、垂直领域下的对…...

网络安全事件管理

一、背景 信息化技术的迅速发展已经极大地改变了人们的生活,网络安全威胁也日益多元化和复杂化。传统的网络安全防护手段难以应对当前繁杂的网络安全问题,构建主动防御的安全整体解决方案将更有利于防范未知的网络安全威胁。 国内外的安全事件在不断增…...

Swagger记录一次生成失败

最近在接入Swagger的时候遇到一个问题,就是Swagger UI可以使用的,但是/v3/docs 这个接口的json返回的base64类型的json,并不是纯json,后来检查之后是因为springboot3里面配置了json压缩。 Beanpublic HttpMessageConverters cusHt…...

Go 语言常用工具方法总结

在 Go 语言开发中,常常需要进行一些常见的类型转换、字符串处理、时间处理等操作。本文将总结一些常用的工具方法,帮助大家提高编码效率,并提供必要的代码解释和注意事项(go新人浅浅记录一下,以后来翻看🤣&…...

ThingsBoard规则链节点:GCP Pub/Sub 节点详解

目录 引言 1. GCP Pub/Sub 节点简介 2. 节点配置 2.1 基本配置示例 3. 使用场景 3.1 数据传输 3.2 数据分析 3.3 事件通知 3.4 任务调度 4. 实际项目中的应用 4.1 项目背景 4.2 项目需求 4.3 实现步骤 5. 总结 引言 ThingsBoard 是一个开源的物联网平台&#xff0…...

【Linux】select,poll和epoll

select,poll,epoll都是IO多路复用的机制。I/O多路复用就通过一种机制,可以监视多个描述符fd,一旦某个描述符就绪(一般是读就绪或者写就绪),系统会通知有I/O事件发生了(不能定位是哪一个)。但sel…...

Qt程序发布及打包成exe安装包

参考:Qt之程序发布以及打包成exe安装包 目录 一、简述 Qt 项目开发完成之后,需要打包发布程序,而因为用户电脑上没有 Qt 配置环境,所以需要将 release 生成的 exe 文件和所依赖的 dll 文件复制到一个文件夹中,然后再用 Inno Setup 打包工具打包成一个 exe 安装包,就可以…...

python怎样运行js语句

1. 安装 pip install PyExecJS # 需要注意, 包的名称:PyExecJS 2. 简单使用 import execjs execjs.eval("new Date") 返回值为: 2018-04-04T12:53:17.759Z execjs.eval("Date.now()") 返回值为:152284700108…...

汽车渲染领域:Blender 和 UE5 哪款更适用?两者区别?

在汽车渲染领域,选择合适的工具对于实现高质量的视觉效果至关重要。Blender和UE5(Unreal Engine 5)作为两大主流3D软件,各自在渲染动画方面有着显著的差异。本文将从核心定位与用途、工作流程、渲染技术和灵活性、后期处理与合成四…...

JAVA实现将PDF转换成word文档

POM.xml <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/POM/4.0.…...

前端-Git

一.基本概念 Git版本控制系统时一个分布式系统&#xff0c;是用来保存工程源代码历史状态的命令行工具 简单来说Git的作用就是版本管理工具。 Git的应用场景&#xff1a;多人开发管理代码&#xff1b;异地开发&#xff0c;版本管理&#xff0c;版本回滚。 Git 的三个区域&a…...

如何分析Windows防火墙日志

Windows防火墙&#xff0c;也被称为Windows Defender Firewall&#xff0c;是一种内置的安全功能&#xff0c;可以主动监控和分析运行Windows操作系统的计算机上通过Windows防火墙的网络流量&#xff0c;主要目的是作为计算机和互联网或其他网络之间的屏障&#xff0c;使管理员…...

工作坊报名|使用 TEN 与 Azure,探索你的多模态交互新场景

GPT-4o Realtime API 发布&#xff0c;语音 AI 技术正在进入一场新的爆发。语音AI技术的实时语音和视觉互动能力将为我们带来更多全新创意和应用场景。 实时音频交互&#xff1a; 允许应用程序实时接收并响应语音和文本输入。自然语音生成&#xff1a; 减少 AI 技术生成的语音…...

学习笔记041——Elastic Search的学习与使用以及SpringBoot整合

文章目录 1、Elastic Search介绍1.1、ES 的数据结构1.2、ES 为什么查询快1.3、CRUD 2、Spring Boot 整合 ES 1、Elastic Search介绍 ‌Elasticsearch‌是一个分布式的、基于RESTful API的搜索和分析引擎&#xff0c;广泛用于大规模数据存储和快速检索。它最初由Shay Banon于20…...

R安装rgdal报错 解决办法

尝试了网上很多办法&#xff0c;不知道哪一步解决了&#xff0c;记录一下所有步骤&#xff1a; 1. 尝试github安装 options(repos c(CRAN "https://mirrors.tuna.tsinghua.edu.cn/CRAN/"))install.packages("devtools")library(devtools)devtools::in…...

【智能制造-46】人机工程(工厂自动化)

工作空间设计 设备布局规划 根据人体测量学数据&#xff0c;合理安排自动化设备、生产线和工作区域的布局。例如&#xff0c;考虑工人的操作空间和活动范围&#xff0c;确保他们能够舒适地接近和操作设备。在汽车装配车间&#xff0c;机器人和工人的工作区域应划分明确&#…...

C#笔记(5)

一、winform项目与窗体控件 1、部分类的使用 好处&#xff1a;让自动生成的代码后置&#xff0c;我们编写程序的代码显得更加简洁 特点&#xff1a;在最后编译的时候&#xff0c;仍然编译成一个窗体类。 窗体和控件的基本使用 3、Event事件&#xff08;委托--》事件&#…...

零基础图解VLN视觉语言导航:从输入到决策的完整模型拆解

1. 视觉语言导航&#xff08;VLN&#xff09;是什么&#xff1f; 想象你第一次去朋友家做客&#xff0c;对方在电话里说&#xff1a;“进门左转&#xff0c;看到红色沙发后直走&#xff0c;右手边第二个房间就是。”这时候你的大脑会做三件事&#xff1a;用眼睛观察环境&#x…...

Dify插件安装全攻略:从在线市场到离线部署的完整实践

1. Dify插件安装前的准备工作 在开始安装Dify插件之前&#xff0c;我们需要先了解几个关键概念。Dify 1.0.0版本之后&#xff0c;所有工具和模型供应商都改为了插件形式&#xff0c;这意味着我们需要掌握插件的安装方法才能充分发挥Dify的功能。插件主要分为五大类&#xff1a…...

SecGPT-14B实操手册:Gradio界面中temperature=0.3对安全答案确定性的影响

SecGPT-14B实操手册&#xff1a;Gradio界面中temperature0.3对安全答案确定性的影响 1. 引言&#xff1a;为什么安全问答需要“确定性”&#xff1f; 想象一下&#xff0c;你正在向一位网络安全专家咨询一个紧急的安全漏洞问题。你希望得到的回答是清晰、准确、且唯一的正确答…...

MATLAB App Designer实战:如何用按钮优雅终止死循环(附完整代码)

MATLAB App Designer实战&#xff1a;用按钮优雅控制循环的5个关键技巧 在MATLAB App Designer开发中&#xff0c;循环控制是每个开发者都会遇到的经典问题。想象一下这样的场景&#xff1a;你精心设计的界面正在运行一个数据处理循环&#xff0c;突然发现参数设置有误&#xf…...

避坑指南:Xilinx MIG降频配置与Synopsys VIP仿真的时序参数设置

Xilinx MIG降频配置与Synopsys VIP仿真的时序参数避坑指南 在高速存储接口设计中&#xff0c;DDR控制器的配置与验证往往是项目成败的关键节点。当遇到需要降频使用的场景时——比如标称2400MHz的颗粒实际运行在2000MHz——工程师往往会在时序参数配置和验证环境匹配上踩坑。本…...

Hypervisor环境下高效进程间通信技术解析

1. Hypervisor环境下的进程通信挑战 在虚拟化技术大行其道的今天&#xff0c;Hypervisor环境下的进程间通信&#xff08;IPC&#xff09;已经成为系统性能的关键瓶颈。想象一下&#xff0c;你住在小区同一栋楼的两个单元里&#xff0c;明明直线距离只有10米&#xff0c;却要绕到…...

LyricsX:重构Mac音乐体验的智能歌词助手

LyricsX&#xff1a;重构Mac音乐体验的智能歌词助手 【免费下载链接】Lyrics Swift-based iTunes plug-in to display lyrics on the desktop. 项目地址: https://gitcode.com/gh_mirrors/lyr/Lyrics 当你在Mac上沉浸于音乐世界时&#xff0c;是否曾因无法同步显示歌词而…...

哔哩哔哩第三方开放平台软件bilipai7.0.2

bilipai是一款面向B站内容爱好者的第三方安卓客户端&#xff0c;它有着清新灵动的界面风格和流畅自然的操作体验&#xff0c;能完整同步B站的各类视频资源&#xff0c;包括番剧、动画、知识科普、生活分享等内容类别&#xff0c;用户登录账号后&#xff0c;还可以实时同步自己的…...

深度学习训练中loss震荡与不收敛的常见原因及实战调优策略

1. 为什么你的模型loss像过山车&#xff1f;先看懂这些典型症状 第一次打开TensorBoard看到自己的loss曲线像心电图一样上蹿下跳&#xff0c;那种感觉就像新手司机开车时方向盘失控。其实loss震荡和不收敛是深度学习中再常见不过的问题&#xff0c;但不同表现背后藏着完全不同的…...

实战演练:基于快马平台仿claude code开发可拖拽任务管理看板应用

今天想和大家分享一个实战项目&#xff1a;基于InsCode(快马)平台开发一个可拖拽的任务管理看板应用。这个项目模拟了类似claude code处理复杂场景的能力&#xff0c;特别适合需要快速验证产品可行性的场景。 项目背景与需求分析 任务管理看板是团队协作中非常实用的工具。我们…...