package day7;
import java.util.Scanner;
public class stack {
//测试
public static void main(String[] args) {
arrarystack arrarystack = new arrarystack(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":
arrarystack.list();
break;
case "exit":
scanner.close();
loop =false;
break;
case "push":
System.out.println("请输入要入栈的数");
int value=scanner.nextInt();
arrarystack.push(value);
break;
case "pop":
try {
int pop = arrarystack.pop();
System.out.printf("弹出的数据为%d",pop);
System.out.println();
}catch (Exception e){
System.out.println(e.getMessage());
}
break;
default:
break;
}
// 思考:如果在方法中有异常处理,则在调用它的时候也要做捕捉异常的处理。
}
System.out.println("程序推出了");
}
}
//创建栈的属性,构造器
//1.判断栈空 2判断栈满 3.出栈 4.入栈 5.遍历栈
class arrarystack{
private int maxsize;
private int top=-1;
int[] stack1; //存放栈的数组
public arrarystack(int maxsize) { //构造函数
this.maxsize = maxsize;
stack1 = new int[maxsize];
}
// 判断栈空
public boolean isempty(){
return top==-1;
}
// 判断为满
public boolean isfull(){
return top+1==maxsize;
}
// 出栈
public int pop(){
if (isempty()){
throw new RuntimeException("为空");
}
// 出栈就是将栈顶的元素
int temp =stack1[top];
top--;
return temp;
// return语句要在最后 所以要一个零时变量来存储栈的值
}
// 入栈
public void push(int value){
if (isfull()){
System.out.println("栈满");
return;
}
top++;
stack1[top]=value;
}
// 遍历
public void list(){
if (isempty()){
System.out.println("为空,没有数据");
}
for (int i=top;i>=0;i--){
System.out.printf("stack1[%d]=%d",i,stack1[i]);
System.out.println();
}
}
}
// 当方法不为void时, throw new exception() 因为不能return;结束判断
//当方法为void时,system out.pringln() return;
用数组模拟栈
最新推荐文章于 2024-05-25 17:14:08 发布