用数组模拟栈

思路分析

在这里插入图片描述

代码实现

package com.atguigu.stack;import com.sun.org.apache.xml.internal.dtm.ref.sax2dtm.SAX2DTM2;import java.net.ServerSocket;
import java.util.ArrayList;
import java.util.Scanner;
import java.util.Stack;/*** @创建人 wdl* @创建时间 2021/3/20* @描述*/
public class ArrayStackDemo {public static void main(String[] args) {//测试一下ArrayStack是否正确//先创建一个ArrayStack对象->表示栈ArrayStack stack = new ArrayStack(4);String key="";boolean loop=true;//控制是否退出菜单Scanner scanner = new Scanner(System.in);while (loop){System.out.println("show:表示显示栈");System.out.println("exit:退出程序");System.out.println("push:表示添加数据到栈(入栈)");System.out.println("pop:表示从栈取出数据(出栈)");System.out.println("请输入你的选择");key=scanner.next();switch (key){case "show":stack.list();break;case "push":System.out.println("请输入一个数");int value=scanner.nextInt();stack.push(value);break;case "pop":try {int res=stack.pop();System.out.println("出栈的数据是"+res);}catch (Exception e){System.out.println(e.getMessage());}break;case "exit":scanner.close();loop=false;break;default:break;}}System.out.println("程序退出");}
}//定义一个ArrayStack表示栈
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;}//入栈pushpublic void push(int value){//先判断栈是否满if(isFull()){System.out.println("栈满");return;}top++;stack[top]=value;}//出栈pop,将栈顶的数据返回public int pop(){//先判断栈是否空if(isEmpty()){//抛出异常throw new RuntimeException("栈空,没有数据");}int value=stack[top];top--;return value;}//显示栈的情况[遍历栈],遍历时,需要从栈顶开始显示数据public void list(){if (isEmpty()){System.out.println("栈空,没有数据");}for(int i=top;i>=0;i--){System.out.printf("stack[%d]=%d\n",i,stack[i]);}}}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/326962.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Redis PK Memcached,哪个更牛叉

转载自 Redis PK Memcached,哪个更牛叉 说到 redis 就会联想到 memcached,反之亦然。了解过两者的同学有那么个大致的印象: redis 与 memcached 相比,不仅支持简单的 key-value 数据类型,同时还提供 list,set,zset,ha…

CoreCLR源码探索(三) GC内存分配器的内部实现

在前一篇中我讲解了new是怎么工作的, 但是却一笔跳过了内存分配相关的部分.在这一篇中我将详细讲解GC内存分配器的内部实现.在看这一篇之前请必须先看完微软BOTR文档中的"Garbage Collection Design",原文地址是: https://github.com/dotnet/coreclr/blob/master/Doc…

使用Servlet上传多张图片——Dao层(BaseDao.java)

package orz.treeSquirrels.dao;import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.List;/*** * * 项目名称:test_uploadFile …

vue学习1

P1 01_Vue学习目标03:50 P2 02_前端知识体系16:27 P3 03_前后端分离的演变史17:13 P4 04_前端MVVM模式09:31 P5 05_Vue是什么07:23 P6 06_第一个Vue应用程序07:06 P7 07_Vue实例声明周期05:35 P8 08_条件渲染06:59 P9 09_列表渲染03:34 P10 10_事件处理03:44…

使用Servlet上传多张图片——Dao层(ProductInfoDao.java)

package orz.treeSquirrels.dao;import orz.treeSquirrels.entity.ProductInfo;/*** 商品信息表的接口* author Administrator**/ public interface ProductInfoDao {//添加public int addProductInfo(ProductInfo pro);}对应的实现类(ProductInfoDaoImpl.java): pa…

Tomcat 的 Server 文件配置详解

转载自 Tomcat 的 Server 文件配置详解 前言 Tomcat隶属于Apache基金会,是开源的轻量级Web应用服务器,使用非常广泛。server.xml是Tomcat中最重要的配置文件,server.xml的每一个元素都对应了Tomcat中的一个组件;通过对xml文件中…

charles抓包ios抓拍教程

charles抓包ios抓拍教程_百度搜索 https://www.jianshu.com/p/724ef9d3efb6 https://www.cnblogs.com/junhuawang/p/7280957.html https://jingyan.baidu.com/article/495ba841de143a38b20ede67.html https://www.cnblogs.com/gchlcc/p/7110902.html

.Net基础体系和跨框架开发普及

.net体系经过十几年发展,发生了很多变化。特别是在最近两年,随着开源和跨平台的发展,衍生出很多概念,像标准库,可移植库,.Net Core等,相信有不少同学对他们之间的关系是有一些困惑的&#xff0c…

使用Servlet上传多张图片——Service层(ProductInfoService.java和ProductInfoServiceImpl)

package orz.treeSquirrels.service;import orz.treeSquirrels.entity.ProductInfo;/*** 商品信息表的业务逻辑类接口* author Administrator**/ public interface ProductInfoService {/*** * Title: addProductInfo* Description: 添加商品信息* param param pro* param retu…

‘1‘ VS 1

‘1’-481; 把字符转换为数字,利用ASCALL表

一次恐怖的 Java 内存泄漏排查实战

转载自 一次恐怖的 Java 内存泄漏排查实战 最近在看《深入理解Java虚拟机:JVM高级特性与最佳实践》(第二版)这本书,理论实践结合,深入浅出,强烈推荐给大家。 这两天对JVM内容进行了一个讨论,…

肯德基app电脑端自动下单程序

肯德基app电脑端自动下单程序_百度搜索 定制款肯德基APP电脑端自动下单软件程序 - 软件开发 - 天盟网-国内领先的IT技术需求服务平台_创新型软件众包服务接单网_知识技能服务威客网 https://qz-m.oaqhsgl.cn/kfc/set/city?type1&sourcehttps%3A%2F%2Fqz-m.oaqhsgl.cn%2Fkf…

ASP.NET与ASP.NET Core用户验证Cookie并存解决方案

在你将现有的用户登录(Sign In)站点从ASP.NET迁移至ASP.NET Core时,你将面临这样一个问题——如何让ASP.NET与ASP.NET Core用户验证Cookie并存,让ASP.NET应用与ASP.NET Core应用分别使用各自的Cookie?因为ASP.NET用的是…

vue学习2

P1 01_Vue学习目标03:50 P2 02_前端知识体系16:27 P3 03_前后端分离的演变史17:13 P4 04_前端MVVM模式09:31 P5 05_Vue是什么07:23 P6 06_第一个Vue应用程序07:06 P7 07_Vue实例声明周期05:35 P8 08_条件渲染06:59 P9 09_列表渲染03:34 P10 10_事件处理03:44…

一道非常棘手的 Java 面试题:i++ 是线程安全的吗

转载自 一道非常棘手的 Java 面试题:i 是线程安全的吗 i 是线程安全的吗? 相信很多中高级的 Java 面试者都遇到过这个问题,很多对这个不是很清楚的肯定是一脸蒙逼。内心肯定还在质疑,i 居然还有线程安全问题?只能说…

Microsoft规划了.NET的未来发展

Microsoft的Mads Torgersen分享了.NET语言家族的更新策略,给出了对公司未来的功能考虑的深刻理解。虽然C#、VB.NET和F#的开发是通过GitHub公开进行的,但是Microsoft的长远规划却经常是保密的。公众如果对Microsoft目前思考问题的方式有相关的意见和建议的…

逆波兰计算器实现

逆波兰计算器 思路分析 代码实现 package com.atguigu.stack;import java.security.AlgorithmConstraints; import java.util.ArrayList; import java.util.List; import java.util.Stack;/*** 创建人 wdl* 创建时间 2021/3/20* 描述*/ public class PolandNotation {public …

Python MySQL 插入表

Python MySQL 插入表 - 吴吃辣 - 博客园 Python MySQL 插入表 章节 Python MySQL 入门Python MySQL 创建数据库Python MySQL 创建表Python MySQL 插入表Python MySQL SelectPython MySQL WherePython MySQL Order ByPython MySQL DeletePython MySQL 删除表Python MySQL Updat…