推荐学习资料:java数组实现栈结构
定义:
栈(stack)又名堆栈,它是一种运算受限的线性表。其限制是仅允许在表的一端进行插入和删除运算。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。
结构及图例:
入栈:
出栈:
趣图:
java代码实现Stack:
代码:
import javax.management.RuntimeErrorException; /** * java数组实现栈结构 * @author Mr.Cao */ public class Stack { //基础数组,核心 private int[] elements; public Stack() { elements = new int[0] ; } /** * 获得数组长度 * @return */ public int size() { return elements.length; } /** * 是否为空 * @return */ public boolean isEmpty() { return elements.length <= 0; } /** * 压入一个元素 * @param element */ public void push(int element) { //创建一个新元素 int[] newArr = new int[elements.length + 1]; //将旧元素复制到新元素 for (int i = 0; i < elements.length; i++) { newArr[i] = elements[i]; } newArr[newArr.length - 1] = element; elements = newArr; } /** * 弹出一个元素 * @return */ public int pop() { if(elements.length == 0) { throw new RuntimeException("Stack is null"); } //得到末尾元素 int element = elements[elements.length - 1]; //创建一个新元素 int[] newArr = new int[elements.length - 1]; //将旧元素复制到新元素,不复制最后一个 for (int i = 0; i < elements.length - 1; i++) { newArr[i] = elements[i]; } //替换数组 elements = newArr; return element; } /** * 查看栈顶元素 * @return */ public Integer peek() { if(elements.length == 0) { return null; } return elements[elements.length - 1]; } }
运行:
public static void main(String[] args) { //创建栈 Stack st = new Stack(); st.push(5);//入栈 st.push(6);//入栈 st.push(7);//入栈 System.out.println(st.isEmpty());//判断栈是否为空 System.out.println(st.peek());//查看栈顶值 st.pop();//出栈 System.out.println(st.peek());//查看栈顶值 st.pop();//出栈 st.pop();//出栈 System.out.println(st.peek());//查看栈顶值 }
输出:
false
7
6
null