上篇文章中,我们已经手动实现了栈,下面,我们将继续手动实现栈的方法~
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());
}
运行截图
到此为止,我们栈方法的模拟实现就到此结束了,下一篇文章,我们将会详细讲解栈的应用场景,敬请期待叭~觉得小编讲的还可以的可以点个关注支持一下~谢谢观看~