道行尚浅,大神请指教,小白仔细斟酌。
public class SequeceStack<T> {
private static final int DEFAULT_SIZE = 16;
private Object[] stack;
private int n; //栈中实际元素个数
private int max_capacity;
/**
* 以默认值构造栈
*/
public SequeceStack() {
this(DEFAULT_SIZE);
}
/**
* 指定大小构造栈
* @param args
*/
public SequeceStack(int capacity) {
stack = new Object[capacity];
this.n=0;
}
public Object get(int index) {
return stack[index];
}
/**
* 获得栈中实际存在的元素个数
*/
public int size() {
return this.n;
}
/**
* 判断栈是否为空
* @param args
*/
public boolean isEmpty() {
return (n==0? true:false);
}
/**
* 入栈
* @param args
*/
public boolean push(T data) {
if(this.n<max_capacity) {
System.out.println("栈已满,添加失败!");
return false;
}
this.stack[this.n] = data;
this.n++;
return true;
}
/**
* 出栈
*/
public T pop() {
if(this.n<=0) {
System.out.println("栈为空,出栈失败!");
return null;
}
this.stack[n-1] = null;
this.n--;
return (T) this.stack[this.n];
}
/**
* 为栈添加10容量
*/
public void addCapacity() {
Object[] newStack = new Object[stack.length + 10];
for(int i=0; i<stack.length; i++) {
newStack[i] = stack[i];
}
stack = newStack;
}
/**
* 清空栈
* @param args
*/
public void clear() {
for(int i=0; i<this.n; i++) {
this.stack[i] = null;
}
System.gc();
}
}