栈的核心思想就是FILO,应用场景(待查),下面是栈的两种实现:
其一,是以数组的方式实现,代码如下:
package de.vogella.datastructures.stack;
import java.util.Arrays;
public class MyStackArray<E> {
private int size = 0;
private static final int DEFAULT_CAPACITY = 10;
private Object elements[];
public MyStackArray() {
elements = new Object[DEFAULT_CAPACITY];
}
public void push(E e) {
if (size == elements.length) {
ensureCapa();
}
elements[size++] = e;
}
@SuppressWarnings("unchecked")
public E pop() {
E e = (E) elements[--size];
elements[size] = null;
return e;
}
private void ensureCapa() {
int newSize = elements.length * 2;
elements = Arrays.copyOf(elements, newSize);
}
}
其二,是以ArrayList的方式实现,代码如下:
import java.util.ArrayList;
public class MyStackList<E> extends ArrayList<E> {
private static final long serialVersionUID = 1L;
public E pop() {
E e = get(size() - 1);
remove(size() - 1);
return e;
}
public void push(E e) {
add(e);
}
}