面試題 9.1 用兩個隊列實現一個棧(Android版)

相關題目: 用兩個隊列實現一個棧

思路分析: 整體的思想跟用兩個棧實現一個隊列,大同小異

直接源碼:

/**
 * Author: Heynchy
 * Date:   2019/11/21
 * <p>
 * Introduce:   用兩個隊列實現棧的操作
 */
public class StackUtil {
    private static LinkedList<String> linkedList1 = new LinkedList<>();
    private static LinkedList<String> linkedList2 = new LinkedList<>();

    /**
     * 模擬入棧操作
     *
     * @param str
     */
    public static void push(String str) {
        if ((linkedList1.size() == 0 && linkedList2.size() == 0) || linkedList1.size() > 0) {
            // 如果隊列1和隊列2都爲空,或者隊列1有值,則將元素壓入隊列1
            linkedList1.add(str);
        } else {
            // 否則壓入隊列2(隊列2有值的情況)
            linkedList2.add(str);
        }
    }

    /**
     * 模擬出棧操作
     *
     * @return
     */
    public static String pop() {
        if (linkedList1.size() == 0 && linkedList2.size() == 0) {
            return "該棧爲空棧!";
        }
        if (linkedList1.size() > 0){
            // 如果隊列1有值,則剩餘1個其餘彈出,並壓入隊列2
            while (linkedList1.size()!=1) {
                String str = linkedList1.pop();
                linkedList2.add(str);
            }
            // 返回隊列1的最後一個值
            return linkedList1.pop();
        } else {
            // 如果隊列2有值,則彈出全部,並壓入隊列1
            while (linkedList2.size()!= 1) {
                String str = linkedList2.pop();
                linkedList1.add(str);
            }
            // 返回隊列2的最後一個值
            return linkedList2.pop();
        }

    }
}

 

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