本文實例講述了JS實現利用兩個隊列表示一個棧的方法。分享給大家供大家參考,具體如下:
先看原理圖:

理清楚思路,再動筆寫:
<!DOCTYPE html><html><head> <title>2 Queue</title> <meta charset="utf-8"/> <script type="text/javascript"> var arr1 = []; var arr2 = []; function Queue(arr){ this.push = function(element){ return arr.push(element); } this.pop = function(){ return arr.shift(); } this.size = function(){ return arr.length; } this.display = function(){ console.log(arr); } } var queue1 = new Queue(arr1); queue1.push(1); queue1.push(4); queue1.push(5); queue1.push(7); queue1.display(); var queue2 = new Queue(arr2); //利用兩個隊列實現棧。放在數組中打印 var res = [], k = 0; while(queue1.size()!=0){ var len = queue1.size(); for(var i = 0; i<len-1; i++){ queue2.push(queue1.pop()); } // 打印queue1最后一個元素,并出隊 res[k] = queue1.pop(); ++k; // 隊列2的元素放置到隊列1中 for(var i = 0; i<len-1; i++){ queue1.push(queue2.pop()); } } console.log("res:" + res); //利用兩個隊列實現棧。單個彈出 while(queue1.size()!=0){ var len = queue1.size(); for(var i = 0; i<len-1; i++){ queue2.push(queue1.pop()); } // 打印queue1最后一個元素,并出隊 console.log(queue1.pop()); // 隊列2的元素放置到隊列1中 for(var i = 0; i<len-1; i++){ queue1.push(queue2.pop()); } } </script></head><body></body></html>運行結果:

更多關于JavaScript相關內容感興趣的讀者可查看本站專題:《JavaScript數據結構與算法技巧總結》、《JavaScript數學運算用法總結》、《JavaScript排序算法總結》、《JavaScript遍歷算法與技巧總結》、《JavaScript查找算法技巧總結》及《JavaScript錯誤與調試技巧總結》
希望本文所述對大家JavaScript程序設計有所幫助。
新聞熱點
疑難解答