Javascript Queue

Queue implementation in javascript

by infiniteloops

HTML

<p>

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);
}