import java.util.Arrays;
public class MyStack<T> {
Object[] data;
private int size;
private int capacity;
public MyStack() {
this.size = 0;
this.capacity = 10;
this.data = new Object[capacity];
}
private void ensureCapacity(){
capacity = capacity * 2;
data = Arrays.copyOf(data, capacity);
}
public void push(T element){
if (size < capacity) {
data[size++] = element;
}else{
ensureCapacity();
data[size++] = element;
}
}
public T pop(){
if (size > 0) {
Object obj = data[size-1];
data[--size] = null;
return (T) obj;
}else{
System.out.println("stack empty");
return null;
}
}
public boolean isEmpty(){
return size == 0;
}
public T peek(){
if (size > 0) {
return (T) data[size - 1];
}
return null;
}
public static void main(String[] args) {
MyStack<String> myStack = new MyStack<String>();
for (int i = 0; i < 20; i++) {
String string = "stack--"+i;
myStack.push(string);
System.out.println("push---"+string);
}
for (int i = 0; i < 6; i++) {
System.out.println("pop---"+myStack.pop());
System.out.println("peek---"+myStack.peek());
}
System.out.println("peek---"+myStack.peek());
System.out.println(myStack.isEmpty());
for (int i = 0; i < 6; i++) {
System.out.println("pop---"+myStack.pop());
}
System.out.println(myStack.isEmpty());
}
}