Queue

function Queue() {
    this.first = null;
    this.last = null;
    this.size = 0;
}

function Node(data) {
    this.data = data;
    this.next = null;
}

Queue.prototype.enqueue = function(value) {
    var node = new Node(value);
    if (this.size === 0) {
        this.first = node;
    } else {
        this.last.next = node;
    }
    this.last = node;
    this.size += 1;
    return this.last;
}

Queue.prototype.dequeue = function() {
    var tmp = this.first;
    this.first = tmp.next;
    return tmp;
}

Queue.prototype.peek = function() {
    return this.first;
}

var q = new Queue();
q.enqueue(1); // Node {data: 1, next: null}
q.enqueue(2); // Node {data: 2, next: null}
q.enqueue(3); // Node {data: 3, next: null}
q.peek(); // Node {data: 1, next: Node}
Objectq.dequeue(); // Node {data: 1, next: Node}
q.peek(); // Node {data: 2, next: Node}

Last updated

Was this helpful?