1.小程式簡單介紹與入門準備
阿新 • • 發佈:2021-01-01
傳送門
程式碼
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\) 中恢復原樣