栈的应用,java用数组实现

p

ackage com.demo;

import java.util.Scanner;

public class ArrayStackDemo {
    
    
    public static void main(String[] args) {
    
    


        //玩一把
        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 "exit":
                    scanner.close();
                    loop=false;
                    break;
                case "push":
                    System.out.println( "请输入一个数" );
                    int value=scanner.nextInt();
                    stack.push(  value);
                    break;
                case "pop":

                    try{
    
     int result=stack.pop();
                        System.out.println(result);

                    }catch (Exception e){
    
    


                        System.out.println( e.getMessage() );
                    }
                    stack.pop();
                    break;
                    default:
                    break;

            }



        }
        System.out.println( "程序退出~~~" );

    }


}
//用一个类表示栈
class ArrayStack{
    
    
    private int maxSize;//栈的大小
    private int  top=-1;//表示栈顶,初始化为-1
    private int[] stack;//用数组模拟栈

    //构造器
    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;
    }
    //入栈
    public void push(int value){
    
    
        //判断栈满
        if(isFull()){
    
    
            System.out.println( "栈满" );
            return;
        }
        //入栈
        top++;
        stack[top]=value;



    }
//    出栈
    public int pop(){
    
    
        if(isEmpty()){
    
    
            //异常处理
            throw new RuntimeException("栈空");
        }
        //出栈先出,后减
        int value=stack[top];
        top--;
        return value;

    }
//显示栈的情况
    public void list(){
    
    
        if (isEmpty()){
    
    

            System.out.println( "栈空,没有数据" );
            return;
        }
 //需要从栈顶显示数据
        for (int i = top; i>=0 ; i--) {
    
    
            System.out.printf("stack[%d]=%d\n",i, stack[i] );

        }


    }




}

猜你喜欢

转载自blog.csdn.net/houzhicongone/article/details/113918023