栈在计算机中是很常见的,栈究竟是什么呢?用官方的话说栈(Stack
) 类表示后进先出(LIFO)的对象堆栈。通俗的讲栈至关因而一个容器,就咱们生活中而言,咱们能够在容器中装东西,也能够从中取出咱们想要的物品。咱们能够形象地画个示意图,以下所示:java
假如,咱们有几个(编号为一、二、三、四、五、六、7)物品按照如图装入容器中,顺序如图所示,假如咱们要取出来,顺序必定是倒着的(即:七、六、五、四、三、二、1),这就是咱们所谓的:LIFO(Last In First Out)。在栈中,咱们称最早放入的元素称为栈底元素,最后放入的称为栈顶元素。将元素放在栈中称为入栈,取出称为出栈。如今咱们想要用数组简单地实现栈结构。数组
查API可知,在栈中存在5个方法,即:empty()、peek()、pop()、push()、search()。要想实现这几种方法,咱们须要分别构造相应的方法,使之达到预期的效果。函数
package stack01; import java.util.Arrays; import java.util.EmptyStackException; public class StackExer { class ArrayStack{ private String[] data=new String[10];//存储数据 private int size;//记录个数 //把item压入堆栈顶部 public void push(String str) { //判断是否须要扩容 if (size>data.length) { data=Arrays.copyOf(data, data.length*2); } data[size++]=str; } //查看堆栈顶部的对象,但不从堆栈中移除它 public String peek() { //判断栈是否为空 if (size==0) { throw new EmptyStackException(); } return data[size-1]; //获取栈顶元素 } //移除堆栈顶部的对象,并做为此函数的值返回该对象 public String pop() { String str=this.peek();//获取栈顶元素 size--; //减小元素个数 return str; } //测试堆栈是否为空 public boolean empty() { return size==0; } //返回对象在堆栈中的位置,以 1 为基数 public int research(String str) { //顺着放倒着拿(FILO/LIFO) for (int i = size-1; i >=0; i--) { if (str==data[i]||str!=null&&data[i].equals(str)) { return size-i; } } return -1; //返回栈中不存在该元素 } } }