java中的栈详解

概念

  • 栈是一种只允许在一端进行插入或删除的线性表
  • 栈的操作端通常被称为栈顶,另一端被称为栈底
  • 栈的插入操作称为进栈,栈删除操作被称为出栈

示例

就比如同学交作业的时候 ,从第一个交作业一次交到最后,第一个交作业的时候是最下面的,然后一次叠加,直到最后一个学生交完作业,我们可以知道当老师修改作业的时候会从上面一次修改,修改的过程就可以成为出栈

存储的结构

  • 顺序存储的栈成为顺序栈,链式存储的栈称为链式栈

示意图

在这里插入图片描述

用java代码实现

public class StackX {
    private int maxSize;
    private long[] stackArray;
    private int top;

    private StackX(int max) {//设置放入栈最大可以存储的数组
        maxSize = max;
        stackArray = new long[maxSize];
        top = 0;
    }

    public void push(long j) {//数组里面的元素进栈
        stackArray[++top] = j;
    }

    public long pop() {//出栈
        return stackArray[top--];
    }

    public long peek() {//获取栈顶的元素
        return stackArray[top];
    }

    public boolean isEmpty() {//判断栈里面是否还有元素
        return top == 0;
    }

    public boolean isFull() {
        return (top == maxSize - 1);
    }


    public static void main(String[] args) {

        StackX s = new StackX(10);
        s.push(12);
        s.push(13);
        s.push(14);
        s.push(15);
        s.push(16);
        System.out.println("栈顶元素为" + s.peek());
        System.out.println("================");
        while (!s.isEmpty()) {
            long value = s.pop();
            System.out.println("出栈顺序是" + value);
        }
    }

}

输出
在这里插入图片描述
从代码里面可以看出 输入的顺序和输出的顺序正好相反,这是应为最后入栈的数据项最先弹出,所以16最先被打印出来,这就是一个入栈和出栈的示例

猜你喜欢

转载自blog.csdn.net/qq_40688338/article/details/84637525