算法----队列

Posted yunnex-xw

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了算法----队列相关的知识,希望对你有一定的参考价值。

//算法——队列

/*
* 队列是一种列表,不同的是队列只能在队尾插入元素,在队首删除元素。
* 队列是一种先进先出(First-In-First-Out,FIFO)的数据结构
* 向队列中插入新元素和删除队列中的元素。插入操作也叫做入
 队,删除操作也叫做出队

 enqueue: 入列
 dequeue: 出列
 front: 获取列首元素
 back: 获取列尾元素
 toString: 显示队列所有元素
 empty: 判断队列是否为空
*
* */


function enqueue(element) {
    this.dataStore.push(element);
}
function dequeue() {
    return this.dataStore.shift();
}
function front() {
    return this.dataStore[0];
}
function back() {
    var len = this.dataStore.length;
    return this.dataStore[len-1];
}
function toString() {
    var retStr = "";
    for(var i = 0; i< this.dataStore.length; i++){
        retStr += this.dataStore[i] + "
";
    }
    return retStr;
}
function empty() {
    return this.dataStore.length === 0;
}

function Queue() {
    this.dataStore = [];
    this.enqueue = enqueue;
    this.dequeue = dequeue;
    this.front = front;
    this.back = back;
    this.toString = toString;
    this.empty = empty;
}

// var q = new Queue();
// q.enqueue("张三");
// q.enqueue("李四");
// q.enqueue("王五");

var fs = require("fs"),
    females = new Queue(),
    males = new Queue();

var danceList = fs.readFileSync("./dance.txt","utf-8").split("
"),
    len = danceList.length;

for(var i = 0; i< len ; i++) {
    danceList[i] = danceList[i].trim();
    var sex = danceList[i].split(" ")[0];
    var name = danceList[i].split(" ")[1];
    if (sex === "F") {
        females.enqueue({sex: sex,name: name});
    }else  {
        males.enqueue({sex: sex,name: name});
    }
}


(function dance() {
    console.log("The dance partners are: ");
    while (!females.empty() && !males.empty()) {
        console.log("男舞伴是" + females.dequeue().name,"女舞伴是" + males.dequeue().name);
    }
})();

 

以上是关于算法----队列的主要内容,如果未能解决你的问题,请参考以下文章

以下代码片段的算法复杂度

有人可以解释啥是 SVN 平分算法吗?理论上和通过代码片段[重复]

片段(Java) | 机试题+算法思路+考点+代码解析 2023

栈与队列:链队列算法+可执行代码

栈与队列:循环队列算法+可执行代码

java数据结构与算法:单向队列与环形队列详解(图片+代码)