栈(java数组实现)

队列是一个先入先出的有序列表,而栈和队列相反,是个先入后出的有序列表。

栈的特点就是先进后出。

栈的最底端我们称为栈底,这一端是不会变化的。而另一个变化随着放入元素而变化的一端我们称为栈顶。

  1. 首先我们创建一个栈类,用来实现对栈的各种操作
    class Stack {

        private int maxSize;  // 栈的最大长度
        private int[] stack;  // 用数组来模拟栈
        private int top = -1; // 这个表示栈顶

        public Stack(int maxSize) {
        this.maxSize = maxSize;
        this.stack = new int[maxSize];
    }

    }
  1. 接着来分别写两个方法,分别来判断栈是满是空
    // 判断栈满
    public boolean isFull() {
        return top == maxSize - 1;
    }

    // 判断栈是否为空
    public boolean isEmpty() {
        return top == -1;
    }
  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 temp = top;
        top --;
        return stack[temp];
    }
  1. 再然后来写一个遍历栈的方法
    // 遍历栈
    public void show() {
        if(isEmpty()) {
            System.out.println("栈已经为空了!");
            return;
        }
        for(int i = top; i >= 0; i --)
            System.out.println(stack[i]);
    }
  1. 最后来写一个main()方法来测试一下这个栈
    public class StackTest {
        public static void main(String[] args) {
            Stack stack = new Stack(3);
            stack.push(1);
            stack.push(2);
            stack.push(3);

            stack.show();

            System.out.println("-----------------------");

            System.out.println(stack.pop());
            System.out.println(stack.pop());
            System.out.println(stack.pop());
        }
    }
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。