DS#2 Queues
Object Implemenataion of queue.
by bhupendra negi
HTML
<script src="https://rawgit.com/eu81273/jsfiddle-console/master/console.js"></script>
JavaScript
function Queue(capacity) {
this._capacity = capacity || Infinity;
this._storage = {};
this._head = 0;
this._tail = 0;
}
Queue.prototype.enqueue = function(value) {
if (this.count() < this._capacity) {
this._storage[this._tail++] = value;
return this.count();
} else {
return "Max capacity already reached. Remove element before adding a new one.";
}
}
Queue.prototype.dequeue = function() {
if (this.count() > 0) {
var val = this._storage[this._head];
//console.log(val);
delete this._storage[this._head] ? this._head++ : this._head;
return val;
} else {
return ("No more item to delete , enqueue some before dequeeing");
}
}
Queue.prototype.count = function() {
return this._tail - this._head;
}
Queue.prototype.peek = function() {
return this._storage[this._head];
}
Queue.prototype.contains = function(val) {
for (var i =this._head;i<this._tail;i++) {
if (this._storage[i] === val) return true;
}
return false;
}
Queue.prototype.untill = function(val) {
for (var i =this._head;i<this._tail;i++) {
if (this._storage[i] === val) return i-this._head+1;
}
return null;
}
// tetsing
var q = new Queue(3);
q.enqueue(1);
q.enqueue(2);
q.enqueue(3);
console.dir(q);
//console.log(q.enqueue(4));
console.log("deque.....")
console.log(q.dequeue());
console.log(q.dequeue());
console.log(q.dequeue());
console.log(q.dequeue());
console.dir(q);
console.log(q.enqueue(4));
console.dir(q);
console.log("peeking ...");
console.log(q.peek());
console.log(q);