数组模拟stack
2024-10-07 19:51:26
package com.cxy.springdataredis.data; import java.util.Scanner; public class StackDemo {
public static void main(String[] args) {
//测试一下ArrayStack 是否正确
//先创建一个ArrayStack对象->表示栈
ArrayStack stack = new ArrayStack();
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.printf("出栈的数据是 %d\n", res);
} catch (Exception e) {
// TODO: handle exception
System.out.println(e.getMessage());
}
break;
case "exit":
scanner.close();
loop = false;
break;
default:
break;
}
} System.out.println("程序退出~~~");
} }
class ArrayStack{
private int top =-;
private int maxSize;
private int[] stack; public ArrayStack(int maxSize) {
this.maxSize = maxSize;
stack = new int[this.maxSize];
} //栈满
public boolean isFull() {
return top == maxSize - ;
}
//栈空
public boolean isEmpty() {
return top == -;
}
public void push(int n){
if (isFull()){
throw new RuntimeException("栈以满");
}
top++;
stack[top] =n;
}
public int pop(){
if (isEmpty()){
throw new RuntimeException("栈为空");
}
System.out.println(stack[top]);
int value =stack[top];
top--;
return value;
} public void list() {
if(isEmpty()) {
System.out.println("栈空,没有数据~~");
return;
}
//需要从栈顶开始显示数据
for(int i = top; i >= ; i--) {
System.out.printf("stack[%d]=%d\n", i, stack[i]);
}
}
}
最新文章
- 团队第二周:SRS文档
- SQ--模糊查询
- windows phone(成语典籍游戏开发)
- jquery mobile 方法收集.
- SpringMVC接收checkbox传值
- [Everyday Mathematics]20150303
- mysql error: Access denied for user 'root'@'localhost' (using password: YES)
- echarts_部分图表配置_dataZoom精确控制显示数据数量
- Jenkins: Can't connect to Docker daemon解决办法
- 干货!一篇文章集合所有Linux基础命令
- vue中复选框全选与反选
- D1图论最短路专题
- Spark机器学习(5):SVM算法
- python多线程相关知识点
- 新建web项目myeclipse基本设置
- 二十一、MVC的WEB框架(Spring MVC)
- Android viewpager + 可缩放的imageview
- MVC底层原理
- java集合(类似python的列表)
- git 查询某人的提交记录
热门文章
- 6、通过Appium Desktop 实现录制功能
- 1022 Digital Library (30 分)
- MVC过滤器-->;ActionFilterAttribute和HandleErrorAttribute
- java-day20
- Python 内置函数&;filter()&;map()&;reduce()&;sorted()
- linux常用命令-4查看文件内容命令
- shell脚本实现批量端口扫描
- linux 7 系统查询相关
- eureka多实例,模拟多台机器
- 安装和使用pyspider框架时遇到的问题