mathball
Version:
A JavaScript library for Competitive Programming
102 lines (76 loc) • 2.33 kB
JavaScript
'use strict';
var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
var validateNumber = require('../validation/number');
var PriorityQueue = function () {
function PriorityQueue() {
_classCallCheck(this, PriorityQueue);
this.queueArr = [];
}
// show the current queue
_createClass(PriorityQueue, [{
key: 'queue',
value: function queue() {
return this.queueArr.join(' ');
}
// enqueue method
}, {
key: 'push',
value: function push(elem) {
validateNumber(elem, 'PriorityQueue.push');
var flag = false;
for (var i in this.queueArr) {
if (this.queueArr[i] > elem) {
this.queueArr.splice(i, 0, elem);
flag = true;
break;
}
}
if (!flag) {
this.queueArr.push(elem);
}
return true;
}
// dequeue
}, {
key: 'pop',
value: function pop() {
if (this.queueArr.length === 0) {
return 'Queue Underflow';
}
return this.queueArr.pop();
}
// front of the priority queue
}, {
key: 'front',
value: function front() {
if (this.queueArr.length === 0) {
return 'Queue Underflow';
}
return this.queueArr[0];
}
// rear of the priority queue
}, {
key: 'rear',
value: function rear() {
if (this.queueArr.length === 0) {
return 'Queue Underflow';
}
return this.queueArr[this.queueArr.length - 1];
}
// returns if the queue is empty or not
}, {
key: 'empty',
value: function empty() {
return this.queueArr.length === 0 ? true : false;
}
// should return the queue size
}, {
key: 'size',
value: function size() {
return this.queueArr.length;
}
}]);
return PriorityQueue;
}();
module.exports = PriorityQueue;