import java.util.Arrays;
import java.util.EmptyStackException;
public class MyStack {
private T[] elements;
private int size = 0;
private static final int INIT_CAPACITY = 16;
public MyStack() {
elements = (T[]) new Object[INIT_CAPACITY];
}
public void push(T elem) {
ensureCapacity();
elements[size++] = elem;
}
public T pop() {
if(size == 0)
throw new EmptyStackException();
return elements[--size];
}
private void ensureCapacity() {
if(elements.length == size) {
elements = Arrays.copyOf(elements, 2 * size + 1);
}
}
}
难道说弹出的意思不是吧栈中的对象删除?
这个没有删除操作 只是说取下一个值 取完就size-1 再次pop的时候 就是在上次取得基础上再取下一个
删除了啊,因为--size了么。虽然没有真正“清除”这块,但是这个索引上的数据已经不被承认存在了。再push的时候就会冲掉了。
这种做法在计算机中到处可见。比如内存回收,并不需要真的清零,只要把这块内存标记为可用就算回收了。再比如删除文件,并不真的把磁盘恢复到存文件之前的状态,而也是做标记。(所以才可以恢复被删除的文件)
“难道说弹出的意思不是吧栈中的对象删除?”
当头向下移动一个,虽然说没直接删除,,但是不管它了也就相当于删除了。
有问题还可以追问,,,