javascript数据结构与算法——队列

javascript数据结构和算法——队列

在写队列的相关的算法之前需要明白队列的相关的性质——先进先出


<html lang="cn">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Documenttitle>
head>

<body>
  <script>
    function Quene() {
      
      // 1、构造初始化变量
      this.items = [];
    }
    // 1、设置加入元素
    Quene.prototype.enQuene = function (element) {
      
      this.items.push(element);
    }
    // 2、设置删除元素
    Quene.prototype.deQuene = function () {
      
      this.items.shift();
    }
    // 3、设置查找第一个元素
    Quene.prototype.front = function () {
      
      return this.items[0];
    }
    // 4、查看队列长度
    Quene.prototype.size = function () {
      
      return this.items.length;
    }
    // 5、查看队列是否为空
    Quene.prototype.isEmpty = function () {
      
      return Boolean(this.items.length);
    }
    // 6、将队列设置成数组
    Quene.prototype.toString = function () {
      
      let result = " ";
      for (let i = 0; i < this.items.length; i++) {
      
        result += this.items[i] + " ";
      }
      return result;
    }


    let quene = new Quene();
    quene.enQuene("aaa");
    quene.enQuene("bbb");
    quene.enQuene("ccc");
    quene.enQuene("ddd");
    quene.enQuene("eee");
    console.log(quene.items);
    quene.deQuene();
    quene.deQuene();
    console.log(quene.items);
    console.log(quene.front());
    console.log(quene.isEmpty());
    console.log(quene.size());
    console.log(quene.toString());
  script>
body>

html>

以上便是队列数据结构的实现。
下面通过使用队列实现击鼓传花的功能:
规则:规定一组人,并且规定一个数字,从头开始数,数到这个数字所对应的人,将其去除,然后再依次数,最终将没有数到的同学输出

算法实现:

<script>
// 这里是队列
function Quene() {
      
  this.item = [];
}
Quene.prototype.enquene = function (element) {
      
  this.item.push(element)
}
Quene.prototype.dequene = function () {
      
  return this.item.shift();
}
Quene.prototype.front = function () {
      
  return this.item[0];
}
Quene.prototype.isEmity = function () {
      
  return !Boolean(this.item.length)
}
Quene.prototype.size = function () {
      
  return this.item.length;
}
Quene.prototype.toString = function () {
      
  let result = "";
  for (let i = 0; i < this.item.length; i++) {
      
    result += this.item[i] + " ";
  }
  return result;
}

// 这里是击鼓传花的算法
function passQuene(arrList, num) {
      
  let quene = new Quene();
  for (let i = 0; i < arrList.length; i++) {
      
    quene.enquene(arrList[i]);
  }
  while (quene.size() > 1) {
      
    for (let j = 0; j < num-1; j++) {
      
      quene.enquene(quene.dequene());
    }
    quene.dequene();
  }
  return quene.front();
}
let result = passQuene(["张三",'李四','王五','赵六','刘能'],3);
console.log(result);

script>

你可能感兴趣的:(算法,javascript,数据结构,队列,算法)