栈只能在一端进行删除和插入操作,换句话说就是后进后出。最先进来的元素叫做栈底。
可以简单的理解成一桶水,后来的水放在最上面。倒出的时候最上面的水最先倒出去。我用数组实现栈功能。
插入push
1、创建一个新的数组,大小比原来的数组长度大一。
2、把原来的数组的值赋值到新数组
3、新数组插入最新元素
4、新数组赋值给原数组
代码实现
public class MyStack { int[] elements; public void push(int value) { int[] newArr = new int[elements.length + 1]; for (int i = 0; i < elements.length; i++) { newArr[i] = elements[i]; } newArr[elements.length] = value; elements = newArr; } }
出栈POP
1、创建一个新的数组,大小比原来的数组长度小一。
2、获取返回结果,数组下标最大的那个元素。
3、把原数组长度减少一赋值到新数组。
4、新数组赋值给原数组
public class MyStack { int[] elements; public int pop() { int result = 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 result; } }
所有代码
public class MyStack { int[] elements; public MyStack() { elements = new int[0]; } public void push(int value) { int[] newArr = new int[elements.length + 1]; for (int i = 0; i < elements.length; i++) { newArr[i] = elements[i]; } newArr[elements.length] = value; elements = newArr; } public int pop() { int result = 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 result; } public int peel() { return elements[elements.length - 1]; } public int size() { return elements.length; } public void show() { System.out.println(Arrays.toString(elements)); } }