您好,登錄后才能下訂單哦!
這篇文章主要為大家展示了“js循環(huán)隊(duì)列怎么用”,內(nèi)容簡(jiǎn)而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“js循環(huán)隊(duì)列怎么用”這篇文章吧。
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ì)列長(zhǎng)度 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)注億速云行業(yè)資訊頻道!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。