1. 程式人生 > 實用技巧 >1.小程式簡單介紹與入門準備

1.小程式簡單介紹與入門準備

傳送門

程式碼

class CQueue {
    Stack<Integer> stack1;
    Stack<Integer> stack2;
    public CQueue() {
        stack1 = new Stack<>();
        stack2 = new Stack<>();
    }
    
    public void appendTail(int value) {
        stack1.push(value);
    }
    
    public int deleteHead() {
        while(!stack1.isEmpty()) {
            stack2.push(stack1.pop());
        }
        if(stack2.isEmpty()) return -1;
        int res = stack2.pop();
        while(!stack2.isEmpty()) {
            stack1.push(stack2.pop());
        }
        return res;
    }
}

思路

棧只有一個口能進出,而且是 後進先出

佇列需要先進先出,所以我們把 \(stack1\) 當做主棧,\(stack2\) 當做輔助棧

每次都把元素新增到隊頭,相當於把元素新增到\(stack1\) 中,

如果要刪除元素的話,就必須把\(stack1\) 中所有的元素都倒出來放到 \(stack2\) 中,然後把\(stack1\) 最底下的那個元素刪除,即可

然後再把元素重新放入\(stack1\) 中恢復原樣