您好,登錄后才能下訂單哦!
這篇文章主要為大家展示了“js循環隊列怎么用”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“js循環隊列怎么用”這篇文章吧。
1、可以使用循環隊列來模擬擊鼓傳花的游戲(約瑟夫環問題)。
2、一群孩子圍成一圈,每次傳遞n個數,停下來時手里拿花的孩子被淘汰,直到隊伍中只剩下一個孩子,即勝利者。
循環隊列,每次循環的時候(從隊列頭部)彈出一個孩子,再把這個孩子加入到隊列的尾部,循環 n 次,循環停止時彈出隊列頭部的孩子(被淘汰),直到隊列中只剩下一個孩子。
實例
function Queue() { //初始化隊列(使用數組實現) var items = []; //入隊 this.enqueue = function (ele) { items.push(ele); }; //出隊 this.dequeue = function () { return items.shift(); }; //返回首元素 this.front = function () { return items[0]; }; //隊列是否為空 this.isEmpty = function () { return items.length == 0; }; //清空隊列 this.clear = function () { items = []; }; //返回隊列長度 this.size = function () { return items.length; }; //查看列隊 this.show = function () { return items; }; } /** * * @param {名單} names * @param {指定傳遞次數} num */ function onlyOne(names, num) { var queue = new Queue(); //所有名單入隊 names.forEach((name) => { queue.enqueue(name); }); //淘汰的人名 var loser = ""; //只要還有一個以上的人在,就一直持續 while (queue.size() > 1) { for (let i = 0; i < num; i++) { //把每次出隊的人,再次入隊 ,這樣一共循環了num 次(擊鼓傳花一共傳了num次) queue.enqueue(queue.dequeue()); } //到這就次數就用完了,下一個就要出隊了 loser = queue.dequeue(); console.log(loser + "被淘汰了"); } //到這就剩下一個人了 return queue.dequeue(); } var names = ["文科", "張凡", "覃軍", "邱秋", "黃景"]; var winner = onlyOne(names, 99); console.log("金馬獎影帝最終獲得者是:" + winner);
以上是“js循環隊列怎么用”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。