标签:经济 turn 必须 商务 个数 转换 有序 老年人 数组
队列是遵循FIFO(First In First Out,先进先出,也称为先来先服务)原则的一组有序的项 队列在尾部添加新元素,并从顶部移除元素。最新添加的元素必须排在队列的末尾。
? enqueue(element(s)):向队列尾部添加一个(或多个)新的项。
? dequeue():移除队列的第一(即排在队列最前面的)项,并返回被移除的元素。
? front():返回队列中第一个元素——最先被添加,也将是最先被移除的元素。队列不
做任何变动(不移除元素,只返回元素信息——与Stack类的peek方法非常类似)。
? isEmpty():如果队列中不包含任何元素,返回true,否则返回false。
? size():返回队列包含的元素个数,与数组的length属性类似。
//创建一个自己的队列 function MyQueen() { //这里是属性和方法 var items = []; this.enqueue = function (element) { items.push(element); }; this.dequeue = function () { return items.shift(); }; this.front = function () { return items[0]; }; this.isEmpty = function () { return items.length == 0; }; this.clear = function () { items = []; }; this.size = function () { return items.length; }; this.print = function () { console.log(items.toString()); }; } var queue = new MyQueen(); console.log(queue.isEmpty()); //输出true //向队列添加 queue.enqueue("John"); queue.enqueue("Jack"); queue.enqueue("Camila"); queue.print();//队列数组转换字符串 console.log(queue.size()); //输出3 console.log(queue.isEmpty()); //输出false queue.dequeue();//移除第一个进来的 然后下面输出Jack,Camila queue.print();
优先队列:元素的添加和移除是基于优先级的。一个现实的例子就是机场登机的顺序。头等舱和商务舱乘客的优先级要高于经济舱乘客。在有些国家,老年人和孕妇(或带小孩的妇女)登机时也享有高于其他乘客的优先级。
//优先队列 function PriorityQueue() { var items = []; this.isEmpty = function () { return items.length == 0; }; //{1}: 要向PriorityQueue添加元素,需要创建一个特殊的元素这个元素包含了要添加到队列的元素(它可以是任意类型及其在队列中的优先级。 function QueueElement(element, priority) { //{1} 创建新元素 this.element = element; this.priority = priority;//表示优先级 } this.enqueue = function (element, priority) {//入队列 var queueElement = new QueueElement(element, priority); if (this.isEmpty()) {// {2} 如果队列为空 添加元素 items.push(queueElement); } else {//否则,就需要比较该元素与其他元素的优先级。 var added = false;//添加标识 for (var i = 0; i < items.length; i++) {//遍历这个队列数组的所有元素, if (queueElement.priority < items[i].priority) { items.splice(i, 0, queueElement); // {3} 一旦找到priority值更大的元素,就插入新元素 //数组的splice()的方法 在i索引位置开始,删除后面0个元素,插入元素 added = true; break; // {4} 终止for循环 } } if (!added) { //{5} 如果要添加元素的priority值大于任何已有的元素,把它添加到队列的末尾就行了 items.push(queueElement); } } this.print = function () { var str = ‘‘; if (!this.isEmpty()) { //for (var i = 0; i < items.length; i++) { // str += items[i].element + "_" + items[i].priority+"--"; //} str += items[0].element + "_" + items[0].priority ; } console.log(str); }; }; //其他方法和默认的Queue实现相同 } var priorityQueue = new PriorityQueue(); priorityQueue.enqueue("John", 2); //[John,2] priorityQueue.enqueue("Jack", 1);// [Jack,1],[John,2] priorityQueue.enqueue("Camila", 1);// [Jack,1],[Camila,1],[John,2] priorityQueue.print();// 输出 Jack_1
标签:经济 turn 必须 商务 个数 转换 有序 老年人 数组
原文地址:https://www.cnblogs.com/lbjcoder/p/9337250.html