数组栈(java)

简介: 数组栈(java)

数组

/**
 * 数组表示栈
 */
public class ArrayStack {
    //栈的大小
    private int maxSize;
    //数组
    private int[] stack;
    //    栈顶
    private int top = -1;
 
    public ArrayStack(int maxSize) {
        this.maxSize = maxSize;
        stack = new int[maxSize];
    }
 
    //    栈满
    public boolean isFull() {
        return top == maxSize - 1;
    }
 
    //    栈空
    public boolean isEmpty() {
        return top == -1;
    }
 
    public void push(int num) {
        if (isFull()) {
            return;
        }
        top++;
        stack[top] = num;
    }
 
    public int pop() {
        if (isEmpty()) {
            throw new RuntimeException("栈数据为空");
        }
        int res = stack[top];
        top--;
        return res;
    }
 
    //遍历栈
    public void list() {
        if (isEmpty()) {
            return;
        }
        for (int i = top; i >= 0; i--) {
            System.out.println(stack[i]);
        }
    }
 
}
 

测试

public class ArrayStackDemo {
    public static void main(String[] args) {
        ArrayStack stack = new ArrayStack(5);
        stack.push(1);
        stack.push(2);
        stack.push(3);
        stack.push(4);
        stack.list();
        System.out.println();
        stack.pop();
        stack.list();
 
        ArrayStack demo = 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":
                    demo.list();
                    break;
                case "exit":
                    loop = false;
                    scanner.close();
                    break;
                case "push":
                    System.out.println("请输入数字:");
                    int num = scanner.nextInt();
                    demo.push(num);
                    break;
                case "pop":
                    try {
                        System.out.println(demo.pop());
                    } catch (Exception e) {
                        System.out.println(e.getMessage());
                    }
                    break;
                default:
                    break;
            }
        }
    }
}
目录
相关文章
|
2天前
|
Java
java堆溢出和栈溢出
java堆溢出和栈溢出
7 1
|
1天前
|
Java 程序员 容器
五分钟学Java:打印Java数组最优雅的方式是什么?
五分钟学Java:打印Java数组最优雅的方式是什么?
|
3天前
|
机器学习/深度学习 算法 搜索推荐
Java数组(3)
Java数组(3)
16 0
|
3天前
|
存储 Java
Java数组(2)
Java数组(2)
10 0
|
3天前
|
存储 Java 编译器
Java数组(1)
Java数组(1)
7 0
|
3天前
|
存储 监控 算法
Java中的内存管理:从堆到栈的深入解析
Java中的内存管理:从堆到栈的深入解析
|
10月前
|
算法 Java
栈和队列【数据结构与算法Java】
栈和队列【数据结构与算法Java】
37 0
|
算法 Java
用栈实现队列(java数据结构与算法)
用栈实现队列(java数据结构与算法)
103 0
|
前端开发 Java
栈与队列之用java实现队列
栈与队列之用java实现队列
97 0