概念介绍
有同学想了解栈,今天它来了!栈是一种数据结构,它的特点是先进后出,许多小伙伴记了总是会忘记,那么我教下大家怎么记住这个数据结构的特点。栈的同音字是什么?站,大家想象一个站立的桶,如果往里扔两个球,由于底部被被封住了,想把球依次拿出来,那么先进去的球,只能等前面的球被取出后,才能被取出,所以栈(站)的特点是先进后出,你记住了么?
代码实现
我们使用数组来实现栈。栈的属性:
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目录,如果发现不足之处,请联系我进行更改,十分感谢!关注我,为你介绍更多数据结构!