java實現棧

    以下是我用java實現數據結構中的棧

package com.husiwang.Stack; 
 
 
/** 
 * Created by SiwangHu on 2015/2/2. 
 */ 
public class Stack { 
    private Object[] Data;     //數據緩衝區 
    private int Capacity;     //容量 
    private int Top;          //棧頂指針 
 
    //無參構造函數 
    public Stack(){ 
        Capacity=20; 
        Top=0; 
        Data=new Object[Capacity]; 
    } 
 
    //有參構造函數 
    public Stack(int capacity){ 
        if(capacity>0) { 
            Capacity = capacity; 
            Top = 0; 
            Data = new Object[Capacity]; 
        } 
        else{ 
            throw new RuntimeException("容量必須大於0"); 
        } 
    } 
 
    //獲取容量 
    public int getCapacity() { 
        return Capacity; 
    } 
 
    //獲取棧頂指針位置 
    public int getTop() { 
        return Top; 
    } 
 
    //獲取長度 
    public int Length(){ 
        return Top; 
    } 
 
    //判斷是否爲空 
    public boolean IsEmpty(){ 
        if(Top==0) 
            return true; 
        else 
            return false; 
    } 
 
    //擴充容量 
    public void IncreaseCapacity() 
    { 
        Object[] temp=new Object[Capacity]; 
        for(int i=0;i<Capacity;i++){ 
            temp[i] = Data[i]; 
        } 
        Capacity=Capacity*2; 
        Data=new Object[Capacity]; 
        for(int i=0;i<temp.length;i++){ 
            Data[i]=temp[i]; 
        } 
    } 
 
    //擴充容量 
    public void IncreaseCapacity(int multiple) 
    { 
        Object[] temp=new Object[Capacity]; 
        for(int i=0;i<Capacity;i++){ 
            temp[i] = Data[i]; 
        } 
        Capacity=Capacity*multiple; 
        Data=new Object[Capacity]; 
        for(int i=0;i<temp.length;i++){ 
            Data[i]=temp[i]; 
        } 
    } 
 
    //入棧 
    public void Push(Object data){ 
        if(Top<Capacity){ 
            Data[Top]=data; 
            Top++; 
        } 
        else{ 
            IncreaseCapacity(); 
            Data[Top]=data; 
            Top++; 
        } 
    } 
 
    //出棧 
    public Object Pop(){ 
        if(!IsEmpty()) { 
            Object temp = Data[Top - 1]; 
            Top--; 
            return temp; 
        } 
        else{ 
            throw new RuntimeException("棧爲空"); 
        } 
    } 
 
    //獲取棧頂元素 
    public Object Peek(){ 
        if(!IsEmpty()) { 
            return Data[Top-1]; 
        } 
        else{ 
            throw new RuntimeException("棧爲空"); 
        } 
    } 
 
    @Override 
    public String toString() { 
        String temp=""; 
        for(int i=0;i<Top;i++){ 
            temp+=Data[i]+" "; 
        } 
        return "Stack{" + 
                "Data=" + temp + 
                ", Capacity=" + Capacity + 
                ", Top=" + Top + 
                '}'; 
    } 
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章