上篇文章中,我们已经手动实现了栈,下面,我们将继续手动实现栈的方法~
1.在栈中存放元素
1.定义一个usedsize,用来临时存放下标
2.当存放一个元素后,下标加一
3.不要忘记判满
如图
代码如下
判满方法
public boolean isFull(){return usedSize == elem.length;}
存放代码
public void push(int val){if (isFull()){elem = Arrays.copyOf(elem,elem.length*2);}this.elem[usedSize] = val;this. usedSize++;}
调用测试
public static void main(String[] args) {MyStack myStack = new MyStack();myStack.push(1);myStack.push(2);myStack.push(3);myStack.push(4);System.out.println();}
运行截图
2.判断栈是否为空
这个方法很简单,usedsize==0,即为此栈为空
代码如下
public boolean isEmpty(){return usedSize == 0;}
调用测试
public static void main(String[] args) {MyStack myStack = new MyStack();myStack.push(1);myStack.push(2);myStack.push(3);myStack.push(4);System.out.println(myStack.isEmpty());}
运行截图
3.删除栈顶第一个元素
其实这个方法非常简单,直接让usedssize--即可,也就我们所谓的删除,并不是真正的删除,而是将其覆盖,如图
注意:不要忘记判满
代码如下
public int pop(){if(isEmpty()){throw new EmptyException();}int oldVla = elem[usedSize-1];usedSize--;return oldVla;}
调用测试
public static void main(String[] args) {MyStack myStack = new MyStack();myStack.push(1);myStack.push(2);myStack.push(3);myStack.push(4);System.out.println(myStack.pop());}
运行截图
4.返回栈顶元素
原理同上,只是不用删除,直接返回usedSize-1位置的值即可
代码如下
public int peek(){if(isEmpty()){throw new EmptyException();}return elem[usedSize-1];}
这里我们用到了自定义异常
public class EmptyException extends RuntimeException{public EmptyException() {}public EmptyException(String message) {super(message);}
}
调用测试
public static void main(String[] args) {MyStack myStack = new MyStack();myStack.push(1);myStack.push(2);myStack.push(3);myStack.push(4);System.out.println(myStack.peek());}
运行截图
到此为止,我们栈方法的模拟实现就到此结束了,下一篇文章,我们将会详细讲解栈的应用场景,敬请期待叭~觉得小编讲的还可以的可以点个关注支持一下~谢谢观看~