우리 수업에는 다음 기능이 있습니다 -
- enqueue(element):대기열에 요소를 추가하는 함수입니다.
- dequeue():대기열에서 요소를 제거하는 함수입니다.
- peek():대기열의 맨 앞에서 요소를 반환합니다.
- isFull():대기열의 요소 제한에 도달했는지 확인합니다.
- isEmpty():대기열이 비어 있는지 확인합니다.
- clear():모든 요소를 제거합니다.
- display():배열의 모든 내용을 표시
큐의 최대 크기를 취하는 생성자와 이 클래스에 대한 다른 함수를 구현할 때 도움이 되는 도우미 함수를 사용하여 간단한 클래스를 정의하는 것으로 시작하겠습니다. 또한 각 노드에 대한 우선 순위와 데이터가 있는 PriorityQueue 클래스 프로토타입의 일부로 다른 구조를 정의해야 합니다. 스택을 구현하면서 배열을 사용하여 우선 순위 큐도 구현합니다.
예시
class PriorityQueue { 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; } } // Create an inner class that we'll use to create new nodes in the queue // Each element has some data and a priority PriorityQueue.prototype.Element = class { constructor (data, priority) { this.data = data; this.priority = priority; } }
또한 스택이 가득 찼는지 비어 있는지 확인하기 위해 isFull 및 isEmpty라는 2개의 함수를 추가로 정의했습니다.
isFull 함수는 컨테이너의 길이가 maxSize 이상인지 확인하고 그에 따라 반환합니다.
isEmpty 함수는 컨테이너의 크기가 0인지 확인합니다.
이는 다른 작업을 정의할 때 도움이 됩니다. 이 시점부터 정의한 함수는 모두 PriorityQueue 클래스로 이동합니다.