栈是只在表尾一端进行操作的线性表
成员变量有:栈的长度size,对象数组data。
成员方法有:
构造方法
获取栈的长度getSize()
元素出栈
元素入栈
清空栈
public class Stack {
private int size;//栈的长度 ,也就是栈顶下表
private Object[] data;
public Stack(){//构造函数
data=new Object[10];
}
public int getSize(){//获取栈的长度
return size;
}
//出栈
public Object pop(){
if(size==0)
return null;
else
{
Object tmp = data[size-1];
data[size-1]=null;//便于gc回收
size--;
return tmp;
}
}
//进栈
public void push(Object o){
if(size>=data.length)
{
//栈空间已满,需要扩容
resize();
}
data[size++]=data;
}
/*
* 栈空间扩容两倍
*/
public void resize()
{
Object[] tmp = (Object[]) new Object[data.length*2];
//将原来数组的元素放到新的数组中去
for(int i = 0;i
tmp[i]=data[i];
data[i]=null;//便于gc处理
}
data = tmp;
tmp = null;//便于gc处理,提高程序效率
}
/*
* 清空栈
*/
public void clear() {
for(int i = 0;i
data[i]=null;//将其引用只为null,方便gc进行回收
size = 0;//栈的大小置0
}
}