public class MyStack<T> {
private Object[] stack;
//top指向栈顶空位置
private int top;
//初始创建大小为10的数组
MyStack() {
stack = new Object[10];
}
public boolean isEmpty() {
return top == 0;
}
//显示栈顶
public T peek() {
T t = null;
if (top > 0) {
t = (T) stack[top - 1];
}
return t;
}
//入栈
public void push(T t) {
expandCapacity(top + 1);
stack[top] = t;
top++;
}
//出栈
public T pop() {
T t = peek();
if (top > 0) {
stack[top - 1] = null;
top--;
}
return t;
}
//扩容
public void expandCapacity(int size) {
int len = stack.length;
if (size > len) {
size = size * 3 / 2 + 1;
stack = Arrays.copyOf(stack, size);
}
}
《算法通关村—如何基于数组实现栈》
最新推荐文章于 2024-06-22 21:53:36 发布