一、队列实现
function Queue() { // 属性 this.items = [] // 方法 // 将元素加入队列 Queue.prototype.enqueue = function(element) { this.items.push(element) } // 删除前端元素 Queue.prototype.dequeue = function() { return this.items.shift() } // 查看前端元素 Queue.prototype.front = function() { return this.items[0] } // 查看队列是否为空 Queue.prototype.isEmpty = function() { return this.items.length == 0 } // 查看队列中元素个数 Queue.prototype.size = function() { return this.items.length } // toString 方法 Queue.prototype.toString = function() { var resultString = '' for (var i=0; i< this.items.length; i++) { resultString += this.items[i] + ' ' } return resultString } } var queue = new Queue() queue.enqueue('abc') queue.enqueue('cba') queue.enqueue('nba') queue.enqueue('fa') // js中 alert 就是调用toStirng 方法 如果没有重写就是返回fn https://bbs.csdn.net/topics/390224098 alert(queue) queue.dequeue() alert(queue) queue.dequeue() alert(queue) alert(queue.front()) alert(queue.isEmpty()) alert(queue.size())
二、击鼓传花 队列实现
function pastGame(nameList,num) { var queue = new Queue(); for (var i=0; i<nameList.length; i++) { queue.enqueue(nameList[i]) } //开始数数字 不是num的时候重新加入队列末尾 是num这个数字的时候将其从队列中删除 while(queue.size() > 1) { for (var i=0; i<num-1; i++ ) { queue.enqueue(queue.dequeue()) //删除 添加 } queue.dequeue() } // 获取剩下的那个人 var endName = queue.front(); alert('最终'+endName) return nameList.indexOf(endName) } // 测试 names = ['lily','lucy','tom','lilei','me'] alert(pastGame(names,3))