国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

Java中使用數組實現棧數據結構實例

2019-11-26 15:19:06
字體:
來源:轉載
供稿:網友

棧是Java語言中最重要的數據結構之一,它的實現,至少應該包括以下幾個方法:

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

另外,實現一個棧,還應該考慮到幾個問題:

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

簡單示例,使用數組實現棧,代碼如下:

復制代碼 代碼如下:

public class Stack<E> { 

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

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

    // 棧頂索引 
    private int index; 

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

    /** 
     * 構造方法 
     *  
     * @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; 
            // 如果棧滿,則創建空間為當前棧空間兩倍的棧 
            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中實現了棧(java.util.Stack)的數據結構,它是通過繼承Vector類實現的,一般情況下我們直接拿來用就行了。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 新安县| 永济市| 安达市| 上饶市| 临城县| 石嘴山市| 西宁市| 铜山县| 万全县| 富宁县| 右玉县| 泸溪县| 七台河市| 潮州市| 潼南县| 东乡族自治县| 化德县| 哈巴河县| 左权县| 榕江县| 确山县| 启东市| 晋江市| 兴隆县| 曲阜市| 义乌市| 山阳县| 乌兰浩特市| 孝义市| 宜黄县| 青阳县| 屯昌县| 崇文区| 五大连池市| 罗甸县| 迁西县| 聊城市| 大港区| 杭锦旗| 长沙县| 龙里县|