概念介绍

  有同学想了解栈,今天它来了!栈是一种数据结构,它的特点是先进后出,许多小伙伴记了总是会忘记,那么我教下大家怎么记住这个数据结构的特点。栈的同音字是什么?站,大家想象一个站立的桶,如果往里扔两个球,由于底部被被封住了,想把球依次拿出来,那么先进去的球,只能等前面的球被取出后,才能被取出,所以栈(站)的特点是先进后出,你记住了么?

代码实现

  我们使用数组来实现栈。栈的属性:

1     // 栈的大小
2     private int maxSize;
3     // 用于存放入栈的数据
4     private int[] stack;
5     // top表示栈顶,初始化为-1
6     private int top = -1;

  有参构造:

1     // 有参构造实现
2     public Stack(int maxSize) {
3         this.maxSize = maxSize;
4         stack = new int[maxSize];
5     }

  接下来是栈满和栈空判断的两个方法:

1     // 栈满
2     public boolean isFull() {
3         return top == maxSize - 1;
4     }
5
6     // 栈空
7     public boolean isEmpty() {
8         return top == -1;
9     }

  核心操作:入栈和出栈

 1     // 入栈
 2     public void push(int value) {
 3         if (isFull()) {
 4             throw new RuntimeException("栈满,入栈失败");
 5         }
 6         top++;
 7         stack[top] = value;
 8     }
 9
10     // 出栈
11     public int pop() {
12         if (isEmpty()) {
13             throw new RuntimeException("栈空,没有数据~");
14         }
15         int value = stack[top];
16         top--;
17         return value;
18     }

  至此,代码编写完成,是不是很简单,Git地址:https://github.com/HollowCup/algorithms-and-data-structure,具体实现位于data-structure工程下的stack目录,如果发现不足之处,请联系我进行更改,十分感谢!关注我,为你介绍更多数据结构!

01-14 04:27