var inStack = [], outStack = []; function push(node) { inStack.push(node); } function pop() { if (!outStack.length) { while (inStack.length) { outStack.push(inStack.pop()); } } return outStack.pop(); }
思路:棧:先進后出,隊列:先進先出
如果轉化:
1.將內容先push進一個棧inStack,
2.判斷outStack是否為空,空:將棧inStack中的元素pop(刪除並返回數組的最后一個元素)並push進outStack,非空:直接出棧
3.出棧時,先push進inStack先從outStack出來,即:實現了先進先出
擴展:
用兩個隊列實現一個棧的功能?
入棧:將元素進隊列A
出棧:判斷隊列A中元素的個數是否為1,如果等於1,則出隊列,否則將隊列A中的元素 以此出隊列並放入隊列B,直到隊列A中的元素留下一個,然后隊列A出隊列,再把 隊列B中的元素出隊列以此放入隊列A中。
