• 数组模拟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]);
            }
        }
    }
  • 相关阅读:
    ArcGIS SilverLight/WPF API 2.0版本已正式发布,新特性
    ArcGIS Server Flex API 自定义缩放控件的级数[代码]
    First
    HTML和JavaScript代码分离、平稳退化(1)
    cocos2dx 仿射变换
    java数组创建
    第一次看CCControl
    从零开始のcocos2dx生活(四)ActionManager
    从零开始のcocos2dx生活(二)Node
    从零开始のcocos2dx生活(三)Scheduler
  • 原文地址:https://www.cnblogs.com/xiufengchen/p/11540458.html
Copyright © 2020-2023  润新知