js-佇列使用-迴圈佇列實現擊鼓傳花
阿新 • • 發佈:2019-01-26
佇列是遵循FIFO(先進先出)原則。
迴圈佇列是修改版的佇列實現。
擊鼓傳花遊戲的程式碼如下:
function Queue() {//佇列類 var items = []; this.enqueue = function (element) { items.push(element); } this.dequeue = function () { 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.print = function () { console.log(items.toString()); } } function hotPotato(nameList, num) {//nameList為姓名陣列,num為一個數字用來迭代佇列 var queue = new Queue(); for (var i = 0; i < nameList.length; i++) { queue.enqueue(nameList[i]);//陣列入隊 } var eliminated = ''; while (queue.size() > 1) { for (var i = 0; i < num; i++) { queue.enqueue(queue.dequeue());//陣列出隊然後入隊 } eliminated = queue.dequeue(); console.log(eliminated + '在擊鼓傳花遊戲中被淘汰。'); } return queue.dequeue(); } var names=['John','Jack','Camila','Ingrid','Carl']; var winner=hotPotato(names,7); console.log('勝利者是:'+winner);