zoukankan      html  css  js  c++  java
  • 数组模拟stack

    package com.cxy.springdataredis.data;
    
    import java.util.Scanner;
    
    public class StackDemo {
        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.printf("出栈的数据是 %d
    ", 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 =-1;
        private int maxSize;
        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 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 >= 0 ; i--) {
                System.out.printf("stack[%d]=%d
    ", i, stack[i]);
            }
        }
    }
  • 相关阅读:
    MySQL中TIMESTAMP和DATETIME区别
    图片标签的alt与title区别
    DEDE自带的采集功能,标题太短的解决方法
    Modernizr——为HTML5和CSS3而生!
    InnoDB,MyISAM,Memory区别
    Innodb,MyIsam,聚集索引和非聚集索引
    聚集索引与非聚集索引的总结
    程序kill -9与kill -15的区别,以及回调函数的作用
    linux 信号 SIGINT SIGTERM SIGKILL区别
    oracle mysql sqlserver 查看当前所有数据库及数据库基本操作命令
  • 原文地址:https://www.cnblogs.com/xiufengchen/p/11540458.html
Copyright © 2011-2022 走看看