java 代码
package org.feng.datastruct;
import java.util.Arrays;
public class MyStack<E> {
private Object[] stack;
private final int DEFAULT_LENGTH = 10;
private int size;
public MyStack(int length){
stack = new Object[length];
}
public MyStack(){
this(10);
}
public boolean isEmpty(){
return size == 0;
}
@SuppressWarnings("unchecked")
public E peek(){
return isEmpty() ? null : (E)stack[size - 1];
}
public E pop(){
stack[size-- - 1] = null;
return peek();
}
public E push(E e){
ensureCapacity(size + 1);
stack[size ++] = e;
return e;
}
private void ensureCapacity(int size) {
int len = stack.length;
if(size > len){
int newLen = 10;
stack = Arrays.copyOf(stack, newLen);
}
}
@Override
public String toString() {
return "MyStack: " + Arrays.toString(stack);
}
public static void main(String[] args) {
MyStack<Integer> myStack = new MyStack<>();
myStack.push(1);
myStack.push(2);
myStack.push(3);
System.out.println(myStack);
System.out.println(myStack.peek());
System.out.println(myStack.pop());
System.out.println(myStack.toString());
}
}
运行结果
MyStack: [1, 2, 3, null, null, null, null, null, null, null]
3
2
MyStack: [1, 2, null, null, null, null, null, null, null, null]