UNPKG

mathball

Version:

A JavaScript library for Competitive Programming

102 lines (76 loc) 2.33 kB
'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;