JavaScript数据结构与算法Day3

167 阅读1分钟

队列-击鼓传花

一群人数数,数到某个数字的人自动淘汰,最后剩下的人获得胜利

  • 新建队列
  • 将名字数组用for循环加入独立额
  • 进行while循环,知道最后剩一个人
  • 内部for循环将指定数字之前的人全部移到队列后面去
  • 这时数到指定数字的人就到第一个了删除第一个
  • 打印需要的数据
function passgame(namelist, num) {
            var q1 = new Queue()
            for (var i = 0; i < namelist.length; i++) {
                q1.enqueue(namelist[i])
            }
            while (q1.size() > 1) {
                for (var j = 0; j < num - 1; j++) {
                    q1.enqueue(q1.dequeue())
                }
                q1.dequeue()
            }
            console.log(q1.size())
            console.log(q1.front());
            console.log(namelist.indexOf(q1.front()));
        }
        var namelist = ['111', '222', '333', '444', '555', '666']
        passgame(namelist, 3)

优先级队列

队列不只有元素数据还有其对应的优先级,优先级越小越优先 代码实现:

  • 定义优先级队列的类
  • 其中属性仍然使用数组来实现
  • 优先级队列类中定义一个队列元素类,需要参数element和priority
  • 用this.将element和priority保存起来