最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java中使用數(shù)組實現(xiàn)棧數(shù)據(jù)結(jié)構(gòu)實例

 更新時間:2015年01月15日 11:27:12   投稿:junjie  
這篇文章主要介紹了Java中使用數(shù)組實現(xiàn)棧數(shù)據(jù)結(jié)構(gòu)實例,本文先是講解了實現(xiàn)棧至少應該包括以下幾個方法等知識,然后給出代碼實例,需要的朋友可以參考下

棧是Java語言中最重要的數(shù)據(jù)結(jié)構(gòu)之一,它的實現(xiàn),至少應該包括以下幾個方法:

1.pop() 出棧操作,彈出棧頂元素。
2.push(E e) 入棧操作
3.peek() 查看棧頂元素
4.isEmpty() 棧是否為空

另外,實現(xiàn)一個棧,還應該考慮到幾個問題:

1.棧的初始大小以及棧滿以后如何新增??臻g
2.對棧進行更新時需要進行同步

簡單示例,使用數(shù)組實現(xiàn)棧,代碼如下:

復制代碼 代碼如下:

public class Stack<E> { 

    // Java 不支持泛型數(shù)組,如需使用,請使用Java提供的容器 
    private Object[] stack; 

    // 棧的默認初始大小 
    private static final int INIT_SIZE = 2; 

    // 棧頂索引 
    private int index; 

    public Stack() { 
        stack = new Object[INIT_SIZE]; 
        index = -1; 
    } 

    /** 
     * 構(gòu)造方法 
     *  
     * @param initSize 
     *            棧的初始大小 
     */
    public Stack(int initSize) { 
        if (initSize < 0) { 
            throw new IllegalArgumentException(); 
        } 
        stack = new Object[initSize]; 
        index = -1; 
    } 

    /** 
     * 出棧操作 
     *  
     * @return 棧頂對象 
     */
    public synchronized E pop() { 
        if (!isEmpty()) { 
            E temp = peek(); 
            stack[index--] = null; 
            return temp; 
        } 
        return null; 
    } 

    /** 
     * 入棧操作 
     *  
     * @param obj 
     *            等待入棧的對象 
     */
    public synchronized void push(E obj) { 
        if (isFull()) { 
            Object[] temp = stack; 
            // 如果棧滿,則創(chuàng)建空間為當前棧空間兩倍的棧 
            stack = new Object[2 * stack.length]; 
            System.arraycopy(temp, 0, stack, 0, temp.length); 
        } 
        stack[++index] = obj; 
    } 

    /** 
     * 查看棧頂對象 
     *  
     * @return 棧頂對象 
     */
    public E peek() { 
        if (!isEmpty()) { 
            return (E) stack[index]; 
        } 
        return null; 
    } 

    /** 
     * 查看棧是否為空 
     *  
     * @return 如果棧為空返回true,否則返回false 
     */
    public boolean isEmpty() { 
        return index == -1; 
    } 

    /** 
     * 查看棧是否滿 
     *  
     * @return 如果棧滿返回true,否則返回false 
     */
    public boolean isFull() { 
        return index >= stack.length - 1; 
    } 
}

最后說明,Java中實現(xiàn)了棧(java.util.Stack)的數(shù)據(jù)結(jié)構(gòu),它是通過繼承Vector類實現(xiàn)的,一般情況下我們直接拿來用就行了。

相關文章

最新評論

高邑县| 太保市| 巴马| 伊金霍洛旗| 台南市| 汾西县| 岑巩县| 监利县| 琼中| 墨竹工卡县| 宜兰市| 巨鹿县| 阜新市| 南川市| 九龙坡区| 怀集县| 大埔区| 常熟市| 方城县| 扶风县| 西乌| 阜新市| 瓦房店市| 屏东县| 建平县| 浮梁县| 正定县| 即墨市| 长治县| 晴隆县| 四川省| 宜兰市| 宜丰县| 墨玉县| 永济市| 德阳市| 旌德县| 新昌县| 昌都县| 韩城市| 龙海市|