javascript数据结构与算法——队列
javascript数据结构和算法——队列
在写队列的相关的算法之前需要明白队列的相关的性质——先进先出
<!DOCTYPE html>
<html lang="cn">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</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>
