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