Quick actions

cmd+k|ctrl+k

Navigation

Languages

MyQueue

Snippet info

Language

JavaScript

Visibility

public

Author

onifademola

Created

2021-10-13T16:44:23.821144Z

Updated

2021-10-13T16:44:23.821144Z

class Node {
    constructor(value) {
        this.value = value;
        this.next = null;
    }
}

class Queue {
    constructor(value) {
        this.first = {
            value: value,
            next: null
        };
        this.last = this.first;
        this.length = 1;
    }
    
    push (value) {
        const newNode = new Node(value);
        if (this.length === 1) {
            this.first.next = newNode;
            this.last = newNode;
            this.length++;
            return this;
        }
        const prevLast = this.last;
        this.last = newNode;
        prevLast.next = this.last;
        this.length++;
        return this;
    }
    
    peek () {
        if (this.length < 1)
            return null;
        return this.first.value;
    }
    
    pop () {
        let firstItem = this.first;
        if (this.length === 1) {
            firstItem = this.first;
            this.first === null
            this.length--;
            return firstItem;
        }
        firstItem = this.first;
        this.first = this.first.next;
        this.length--;
        console.log(firstItem.value);
        return firstItem.value;
    }
    
    empty () {
        if (this.length < 1)
            return true;
        return false;
    }
    
    print () {
        const list = [];
        let lastItem = this.first;
        while(lastItem !== null) {
            list.push(lastItem.value);
            lastItem = lastItem.next;
        }
        console.log(list);
    }
}

const queue = new Queue(5);
queue.push(4);
queue.push(36);
queue.push(40);
queue.push(9);
queue.print();
queue.pop();
queue.print();
queue.pop();
queue.pop();
queue.print();
queue.pop();
queue.pop();
queue.pop();
console.log(queue.empty());
INFO