用数组模拟栈

思路分析

在这里插入图片描述

代码实现

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…

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…

Tomcat 的 Server 文件配置详解

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

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

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

‘1‘ VS 1

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

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

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

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 …

逆波兰表达式中缀表达式转换为后缀表达式

中缀表达式转换为后缀表达式 思路分析 代码实现 package com.atguigu.stack;import javax.swing.plaf.nimbus.State; import java.security.AlgorithmConstraints; import java.util.ArrayList; import java.util.List; import java.util.Stack;/*** 创建人 wdl* 创建时间 20…

OSS.Common扩展.Net Standard支持实例分享

上篇(.Net基础体系和跨框架开发普及)介绍了.Net当前生态下的大概情况,也分享了简单实现的过程,这篇文章就是讲解我的OSS.Common项目扩展.Net Standard 支持的过程,主要集中在:方案的选择,移植检…

A configuration error occurred during startup.Please verify the preference field with the prompt: To

今天遇到了一个棘手的问题,到现在都没有解决,折腾了一天结果捣鼓出来个更棘手的问题,经过多方继续折腾,终于把后来的这个问题给搞定了,但是前面的问题还是没有解决。有遇到相类似的问题解决了的麻烦分享一下&#xff0…

150. 逆波兰表达式求值---JAVA---LeetCode

class Solution {public int evalRPN(String[] tokens) {//创建一个栈&#xff0c;只需要一个栈即可Stack<Integer> stack new Stack<>();//遍历 lsfor(String item:tokens){//这里使用正则表达式来取出数if(isNumber(item)){//匹配的是多位数//入栈stack.push(In…

look look C#7

vs2017也rc好几个版本了&#xff0c;本想跟进看看c#7加入了什么内容&#xff0c;去搜索c#7&#xff0c;确实找到了不少文章&#xff0c;无奈很多特性ide根本不让编译啊。。。所以今天主要列出已经确定了的c#7特性&#xff08;一般来说rc后也不会加入新的特性了&#xff0c;其它…

jQuery Raty星级评分插件使用方法

转载自 jQuery Raty星级评分插件使用方法 使用jQuery Raty&#xff0c;可以很方便的在页面上嵌入一个评分组件&#xff0c;如下所示&#xff1a; 使用方法很简单&#xff0c;首先从https://github.com/wbotelhos/raty下载raty的源代码&#xff08;依赖于jquery&#xff09; …