Javascript Queue
Queue implementation in javascript
by infiniteloops
JavaScript
function QueueItem(value) {
this.data = value;
this.next = undefined;
this.previous = undefined;
}
function Queue() {
this.head = undefined;
this.tail = undefined;
this.enqueue = function(item) {
var queueItem = new QueueItem(item);
var prev = this.head;
queueItem.next = prev;
if (prev !== undefined) {
prev.previous = queueItem;
}
this.head = queueItem;
if (this.tail === undefined) {
this.tail = this.head;
}
};
this.dequeue = function() {
var stackObj;
if (this.tail !== undefined) {
stackObj = this.tail;
this.tail = this.tail.previous;
if(this.tail === undefined){
this.head = this.tail;
}
}
return stackObj.data;
};
this.isEmpty = function() {
return this.head === undefined;
};
}
var queue = new Queue();
var i = 0; //JSLint says this is better?
for (i; i < 10; i++) {
queue.enqueue(i);
}
while (!queue.isEmpty()) {
var item = queue.dequeue();
$('p').append(item);
}