栈是一种数据结构,特点后进先出(LIFO);提供了出栈,入栈等操作;
java代码实现如下(基于数组)
public class Stack<T> {
private int size = 10;
private Object[] stack = new Object[size];
private int position;
@SuppressWarnings("unchecked")
public T pop() {
T obj = null;
if (position>0) {
obj = (T) stack[position - 1];
stack[position-1] = null;
position--;
}
return obj;
}
public T push(T obj) {
if (position >= stack.length) {
size *= 2;
//Object[] stack2 = new Object[size];
/*System.arraycopy(stack, 0, stack2, 0, stack.length);
stack = stack2;*/
stack = Arrays.copyOf(stack, size);
}
stack[position++] = obj;
return obj;
}
public int size(){
return position;
}
public static void main(String[] args) {
Stack<Integer> stack = new Stack<>();
for (int i = 0; i < 105; i++) {
stack.push(i);
}
for (int i = 0; i < 105; i++) {
System.out.println(stack.pop());
}
System.out.println("stack size is " + stack.size());
}
}