JS에서 대기열 작성(배열 사용)

저는 최근에 Base CS podcast을 듣기 시작했으며 Lambda School에서 2개월 동안 컴퓨터 공학을 공부한 기억을 떠올리게 합니다. 저는 데이터 구조에 대해 배우고 구축하는 것을 좋아했습니다. 오늘 카타를 풀려고 하다가 Queue를 사용할 기회를 봤습니다. 잊어버렸기 때문에 JS 클래스 구문을 새로 고쳐야 했습니다. 매일 사용하지는 않습니다. 여기에서 큐에 대해 쓸 것이라고 생각했습니다. 왜냐하면 이것이 이 시리즈에 관한 것이기 때문에 그것에 대해 기억하기 위해서입니다!

대기열은 FIFO(선입선출)입니다. 대기열에 먼저 들어간 것이 먼저 나오는 것입니다. 내 구현에서 대기열의 왼쪽이 첫 번째가 됩니다.

처음에는 단순한 대기열이었지만 GeeksforGeeks의 사람들이 몇 가지 추가 방법을 추가하도록 영감을 받았습니다.

평소와 같이 이해가 되지 않거나 개선할 수 있는 부분이 있으면 댓글로 알려주세요.

class Queue {
    constructor() {
        // initialise array as data structure for the queue
        this.queue = [];
    }

    add(item) {
        // we add an item at the end of the array
        this.queue.push(item);
        console.log(
            `${item} has been added to the queue. The queue is now ${this.queue}`
        );
        return this.queue;
    }

    isEmpty() {
        // if queue length is 0, return true otherwise return false
        return this.queue.length === 0;
    }

    remove() {
        // if queue is empty, we print error message
        if (this.isEmpty()) {
            console.log("Can't remove anything, the queue is empty");
            return this.queue;
        }
        // we remove first item of the array
        // from my teacher at Lambda I learnt that the method is called
        // "shift" because when you remove first item of array in memory
        // we need to "shift" the whole array one space to the left in memory
        // it would then be O(n), am I horrinly wrong??
        const removed = this.queue.shift();
        console.log(
            `${removed} has been removed from the q. q is now ${this.queue}`
        );
        return this.queue;
    }

    print() {
        // print error if queue is empty
        if (this.isEmpty()) {
            console.log("Can't print anything, the queue is empty");
            return this.queue;
        }
        // initialise string
        let queue = '';
        // according to mdn I am not supposed to use for..in for arrays, but it works
        // well to get the index. Is it that bad??
        for (let i in this.queue) {
            // we add the item of the queuea and ", ". if last item, we don't add nothing behind
            queue +=
                this.queue[i] + `${parseInt(i) === this.queue.length - 1 ? '' : ', '}`;
        }
        return queue;
    }

    size() {
        // returns length of the array this.queue
        console.log(`The queue has ${this.queue.length} items.`);
        return this.queue.length;
    }

    returnFirst() {
        if (this.isEmpty()) {
            console.log('Queue is empty');
            return this.queue;
        }
        // return first item in the queue
        return this.queue[0];
    }
}

좋은 웹페이지 즐겨찾기