본문 바로가기
자료구조

[Javascript] 자료구조 - Queue

by 구라미 2024. 3. 28.

 

 

1. Queue란?

Queue도 자료구조의 한 종류인데, Queue는 먼저 들어온 데이터가 먼저 나가는, 선입선출의 구조를 갖고 있다. 대기열, 줄 서는 것과 같은 개념을 자료구조로 구현한 것이다. Queue를 다룰 때 기본적인 기능으로 enqueue(데이터 삽입), dequeue(데이터 제거, 반환), peek 또는 front(Queue의 가장 앞에 있는 항목 반환) 등이 있다.

 

2. Queue가 사용되는 사례

이러한 자료구조적 특성을 바탕으로 Queue는 여러가지 상황에서 사용되는데, 주로 대기열관리, 프로세스 스케줄링, 네트워크 패킷 처리, 프린터 대기열, 이벤트 처리, 멀티스레드 환경에서의 작업 처리 등 요청을 순차적으로 처리하는 경우에 주로 사용된다.

 

3. Javascript로 구현한 Queue

일반적인 배열을 이용하여 Queue의 클래스를 구현한 것이다. enqueue, dequeue 등과 같은 기능들이 클래스 내부에 메서드로 정의되어 있다.

class Queue {
    constructor() {
        this.items = [];
    }

    enqueue(element) {
        this.items.push(element);
    }

    dequeue() {
        if (this.isEmpty()) {
            return "Queue is empty";
        }
        return this.items.shift();
    }

    front() {
        if (this.isEmpty()) {
            return "Queue is empty";
        }
        return this.items[0];
    }

    isEmpty() {
        return this.items.length === 0;
    }

    size() {
        return this.items.length;
    }

    print() {
        let str = "";
        for (let i = 0; i < this.items.length; i++) {
            str += this.items[i] + " ";
        }
        return str;
    }
}

// 큐 테스트
const queue = new Queue();
console.log(queue.isEmpty()); // true

queue.enqueue(10);
queue.enqueue(20);
queue.enqueue(30);

console.log(queue.print()); // 10 20 30
console.log(queue.size()); // 3
console.log(queue.isEmpty()); // false

console.log(queue.dequeue()); // 10
console.log(queue.print()); // 20 30
console.log(queue.front()); // 20

 

 

댓글