Java用数组实现栈

栈是只在表尾一端进行操作的线性表

成员变量有:栈的长度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<data.length;i++){
            tmp[i]=data[i];  
            data[i]=null;//便于gc处理
        }  
    	data = tmp;
        tmp = null;//便于gc处理,提高程序效率  
    }  
    /*
     * 清空栈
     */
    public void clear() {
        for(int i = 0;i<data.length;i++)  
        	data[i]=null;//将其引用只为null,方便gc进行回收  
        size = 0;//栈的大小置0
    }  
 }


你可能感兴趣的:(Java用数组实现栈)