使用数组模拟栈的相关操作【栈1.1】

2023-12-18 21:45:32
public class ArrayStackDemo {
    public static void main(String[] args) {
        ArrayStack arrayStack = new ArrayStack(4);
        Scanner sc = new Scanner(System.in);
        boolean loop = true;

        char key = ' ';
        while (loop) {
            System.out.println("======栈操作菜单项======");
            System.out.println("1. s(showList) 打印栈元素");
            System.out.println("2. a(push) 元素入栈");
            System.out.println("3. p(pop) 元素出栈");
            System.out.println("4. e(exit) 程序退出0");
            System.out.println("请输入你的选择:");
            key = sc.next().charAt(0);
            switch (key) {
                case 's':
                case '1':
                    arrayStack.showList();
                    break;
                case 'a':
                case '2':
                    System.out.println("请输入你要添加的元素:");
                    int value = sc.nextInt();
                    arrayStack.push(value);
                    break;
                case 'p':
                case '3':
                    try {
                        System.out.println("出栈元素为:" + arrayStack.pop());
                    } catch (Exception e) {
                        System.out.println(e.getMessage());
                    }
                    break;
                case 'e':
                case '4':
                    sc.close();
                    loop = false;
                    System.out.println("程序退出~");
//                    System.exit(0);
                    break;
                default:
                    break;
            }
        }
    }
}

//定义一个ArrayStack 表示栈
class ArrayStack {
    private int maxSize; //栈的大小
    private int[] stack; //定义一个栈
    private int top = -1; //定义一个栈顶指针

    public ArrayStack(int size) {
        maxSize = size;
        stack = new int[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;
        }
        stack[++top] = value;
    }

    //元素出栈
    public int pop() {
        if (isEmpty()) {
            throw new RuntimeException("栈空,无元素出栈~");
        }
        return stack[top--];
    }

    //遍历栈元素
    public void showList() {
        if (isEmpty()) {
            System.out.println("栈空,无元素遍历~");
            return;
        }
        for (int i = top; i >= 0; i--) {
            System.out.printf("元素 %d \n", stack[i]);
        }
    }
}

?

文章来源:https://blog.csdn.net/qq_58341172/article/details/135071500
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。