這篇文章主要為大家展示了“js循環(huán)隊列怎么用”,內(nèi)容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“js循環(huán)隊列怎么用”這篇文章吧。
目前創(chuàng)新互聯(lián)已為上千的企業(yè)提供了網(wǎng)站建設、域名、虛擬空間、網(wǎng)站托管、服務器租用、企業(yè)網(wǎng)站設計、鹽城網(wǎng)站維護等服務,公司將堅持客戶導向、應用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。
1、可以使用循環(huán)隊列來模擬擊鼓傳花的游戲(約瑟夫環(huán)問題)。
2、一群孩子圍成一圈,每次傳遞n個數(shù),停下來時手里拿花的孩子被淘汰,直到隊伍中只剩下一個孩子,即勝利者。
循環(huán)隊列,每次循環(huán)的時候(從隊列頭部)彈出一個孩子,再把這個孩子加入到隊列的尾部,循環(huán) n 次,循環(huán)停止時彈出隊列頭部的孩子(被淘汰),直到隊列中只剩下一個孩子。
實例
function Queue() { //初始化隊列(使用數(shù)組實現(xiàn)) 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 {指定傳遞次數(shù)} num */ function onlyOne(names, num) { var queue = new Queue(); //所有名單入隊 names.forEach((name) => { queue.enqueue(name); }); //淘汰的人名 var loser = ""; //只要還有一個以上的人在,就一直持續(xù) while (queue.size() > 1) { for (let i = 0; i < num; i++) { //把每次出隊的人,再次入隊 ,這樣一共循環(huán)了num 次(擊鼓傳花一共傳了num次) queue.enqueue(queue.dequeue()); } //到這就次數(shù)就用完了,下一個就要出隊了 loser = queue.dequeue(); console.log(loser + "被淘汰了"); } //到這就剩下一個人了 return queue.dequeue(); } var names = ["文科", "張凡", "覃軍", "邱秋", "黃景"]; var winner = onlyOne(names, 99); console.log("金馬獎影帝最終獲得者是:" + winner);
以上是“js循環(huán)隊列怎么用”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學習更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!