溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

js循環(huán)隊(duì)列怎么用

發(fā)布時(shí)間:2021-09-07 10:54:13 來源:億速云 閱讀:90 作者:小新 欄目:編程語(yǔ)言

這篇文章主要為大家展示了“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è)資訊頻道!

向AI問一下細(xì)節(jié)

免責(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)容。

AI