JavaScript의 배열이 Queue의 모든 기능을 제공하지만 자체 Queue 클래스를 구현해 보겠습니다. 우리 클래스는 다음과 같은 기능을 가질 것입니다 -
- enqueue(element):대기열에 요소를 추가하는 함수입니다.
- dequeue():대기열에서 요소를 제거하는 함수입니다.
- peek():큐의 맨 앞에서 요소를 반환합니다.
- isFull():대기열의 요소 제한에 도달했는지 확인합니다.
- isEmpty():대기열이 비어 있는지 확인합니다.
- clear():모든 요소를 제거합니다.
- display():배열의 모든 내용을 표시
큐의 최대 크기를 취하는 생성자와 이 클래스에 대한 다른 함수를 구현할 때 도움이 되는 도우미 함수를 사용하여 간단한 클래스를 정의하는 것으로 시작하겠습니다. 스택을 구현한 것처럼 배열을 사용하여 대기열도 구현합니다.
예시
class Queue { constructor(maxSize) { // Set default max size if not provided if (isNaN(maxSize)) { maxSize = 10; } this.maxSize = maxSize; // Init an array that'll contain the queue values. this.container = []; } // Helper function to display all values while developing display() { console.log(this.container); } // Checks if queue is empty isEmpty(){ return this.container.length === 0; } // checks if queue is full isFull() { return this.container.length >= this.maxSize; } }
큐가 가득 찼는지 비어 있는지 확인하기 위해 isFull 및 isEmpty라는 2개의 함수도 추가로 정의했습니다.
isFull 함수는 컨테이너의 길이가 maxSize 이상인지 확인하고 그에 따라 반환합니다.
isEmpty 함수는 컨테이너의 크기가 0인지 확인합니다.
이는 다른 작업을 정의할 때 도움이 됩니다. 이 시점부터 정의한 함수는 모두 Queue 클래스에 들어갑니다.