基于数组实现栈
底层使用数组来进行栈的实现,top指向栈顶元素往上一个的空元素。
成员变量有Object[] stack; int top;
成员方法有pop(出栈)、push(进栈)、peek(返回栈顶元素)、isEmpty(是否为空)
public class ArrayStack<T> {
private Object[] stack;
private int top;
public ArrayStack() {
stack = new Object[10];
}
public boolean isEmpty() {
return top == 0;
}
public void push(T t) {
expandCapacity(top + 1);
stack[top] = t;
top++;
}
public T pop() {
if (isEmpty()) {
return null;
}
top--;
Object value = stack[top];
stack[top] = null;
return (T) value;
}
public T peek() {
if (isEmpty()) {
return null;
}
Object value = stack[top - 1];
return (T) value;
}
private void expandCapacity(int size) {
int length = stack.length;
if (size > length) {
size = size * 3 / 2 + 1;
stack = Arrays.copyOf(stack, size);
}
}
其中,expandCapacity用于元素进栈时,如果空间不够进行扩容处理。