import java.util.Scanner;
public class ZhiLing {
static SeqStack<Integer> ss = new SeqStack<Integer>();//定义一个栈
public static void main(String[] agrs) {
/*ss.push(1);
System.out.println("请输入第一个入栈操作数:");
Scanner s1 = new Scanner(System.in);
String str1 = s1.next();
int a = Integer. parseInt(str1);
ss.push(a);
System.out.println("请输入第二个入栈操作数:");
Scanner s2 = new Scanner(System.in);
String str2 = s1.next();
int b = Integer. parseInt(str2);
ss.push(b);*/
zhiling();
// for(int i = 0;i<10;i++){
// System.out.println(ss.get());
// }
}
private static void zhiling(){//指令集方法
System.out.println("请输选择要错做的指令:");
System.out.println("****(1)add****(2)sub****");
System.out.println("****(3)push***(4)pop****");
System.out.println("****(5)exit***");
System.out.println("例如:输入1 然后按回车");
Scanner s3 = new Scanner(System.in);
String str3 = s3.next();
int c = Integer.parseInt(str3);
ss.push(c);
int d = ss.pop();
switch(d){
case 1: add();
break;
case 2: sub();
break;
case 3: push();
break;
case 4: pop();
break;
case 5: System.out.println("您系统已经退出!");
System.exit(0);
break;
default: System.out.println("您输入的指令集有误!系统已经退出!");
System.exit(0);
}
}
private static void pop() {//出栈操作方法
//SStack<Integer> s = new SeqStack<Integer>();
if(ss.isEmpty()){
System.out.println("当前栈没有数据请选择push指令添加数据!");
zhiling();
}else{
System.out.println("您选择的指令是pop操作!弹出栈定数据为"+ss.pop());
zhiling();
}
}
private static void push() {//入栈方法
System.out.println("请输入要入栈的数");
Scanner s1 = new Scanner(System.in);
String str1 = s1.next();
int a = Integer. parseInt(str1);
ss.push(a);
System.out.println("您的数已经入栈");
//System.out.println(s.pop());
zhiling();
}
private static void sub() {//减法方法
System.out.println("您选择的指令是sub操作!操作结果如下:");
int a = ss.pop();
int b = ss.pop();
ss.push(a);
ss.push(b);
int c = a - b;
System.out.println(c);
zhiling();
}
public static void add() {//加法方法
//SStack<Integer> s = new SeqStack<Integer>();
System.out.println("您选择的指令是add操作!操作结果如下:");
/*int a = ss.pop();
int b = ss.pop();
ss.push(a);
ss.push(b);
int c = a + b;*/
int[] a = new int[10];
int c = 0;
for(int i=0;i<ss.value.length-1;i++){
a[i] = ss.pop();
c+=a[i];
}
for(int i=0;i<ss.value.length-1;i++){
ss.push(a[i]);
}
System.out.println(c);
zhiling();
}
}
interface SStack<E> {//定义一个栈接口
boolean isEmpty();
boolean push(int element);
int pop();
int get();
}
class SeqStack<E> implements SStack<E> {//实现栈接口定义一个具体栈类
public int value[];// 存储元素数组
private int top; // top是站顶元素下标
public SeqStack(int capacity) {
this.value = new int[Math.abs(capacity)];
this.top = -1;
}
public SeqStack() {
this(10); // 构造定容量数组
}
@Override
public int get() {
if (!isEmpty()) {
return this.value[this.top];
} else {
return 0;
}
}
@Override
public boolean isEmpty() {
// TODO Auto-generated method stub
return this.top == -1;
}
@Override
public int pop() {
if (!isEmpty()) {
int a = this.value[this.top--];
return a;
} else {
return 0;
}
}
@Override
public boolean push(int element) {
/*String s = null;
if(element==Integer.parseInt(s)){
System.out.println("对象不能为空!");
return false;//若为对象空则不可入栈
}*/
if (this.top == value.length - 1) {// 若栈满,怎扩容
int[] temp = this.value;
this.value = new int[temp.length * 2];
for (int i = 0; i < temp.length; i++) {
this.value[i] = temp[i];
}
}
this.top++;
this.value[this.top] = element;
return true;
}
}
JVM.rar_jvm_jvm 实现
版权申诉
36 浏览量
2022-09-23
10:23:20
上传
评论
收藏 1KB RAR 举报
周楷雯
- 粉丝: 78
- 资源: 1万+
最新资源
- 电子万年历软件仿真(经过多次修改,保证正确性)
- Unity XR 手势射击控制脚本(适用于任何可手势识别的设备)
- 机械设计全自动电表(NB和IC卡表)控制和上壳装配线sw16可编辑非常好的设计图纸100%好用.zip
- 基于matlab的EAN-13条形码识别系统GUI界面.zip代码53
- matlab基于bp神经网络交通信号标志识别GUI界面13个标志.zip代码54
- 电子万年历答辩实物展示视频mp4格式
- 基于python实现的程序,包括哈希感知算法cvHash,图像切割cvsplit,固定目标检测cvRec(附文档ppt)等
- 计算0-10000之间所有偶数的和
- multiled.zip
- 基于php实现的哈希算法的人脸检索
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈