1. 程式人生 > >js-佇列使用-迴圈佇列實現擊鼓傳花

js-佇列使用-迴圈佇列實現擊鼓傳花

佇列是遵循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);