❶ 원형 큐 (Circular Queue)

❓ 원형 형태를 가지며, 먼저 넣은 데이터가 먼저 나오는 FIFO 기반의 선형 자료 구조

❷ 원형 큐 구현하기

(1) CircularQueue() : 초기 속성값 설정을 위한 생성자 함수

unction CircularQueue(array = [], size = DEFAULT_SIZE) {
  this.array = array;
  this.size = array.length > size ? array.length : size;
  this.length = array.length;
  this.head = 0;
  this.tail = array.length;
}

(2) getBuffer() : 객체 내 데이터 셋 반환

CircularQueue.prototype.getBuffer = function () {
  return this.array.slice();
}

(3) isEmpty() : 데이터가 비어 있는지 확인

CircularQueue.prototype.isEmpty = function () {
  return this.length == 0;
}

(4) isFull() : 데이터가 꽉 차 있는지 확인

CircularQueue.prototype.isFull = function () {
  return this.length == this.size;
}

(5) enqueue() : 데이터 추가

CircularQueue.prototype.enqueue = function (element) {
  if (this.isFull()) return false;

  this.array[this.tail] = element;
  this.tail = (this.tail + 1) % this.size;
  this.length++;

  return true;
}

(6) dequeue() : 데이터 삭제

CircularQueue.prototype.dequeue = function () {
  if (this.isEmpty()) return undefined;

  let element = this.array[this.head];
  delete this.array[this.head];
  this.head = (this.head + 1) % this.size;
  this.length--;

  return element;
}

(7) front() : 가장 첫 데이터 반환

CircularQueue.prototype.front = function () {
  return this.length == 0 ? undefined : this.array[this.head];
}

(8) dataSize() : 큐 내 데이터 개수 확인

CircularQueue.prototype.dataSize = function () {
  return this.length;
}

(9) clear() : 큐 초기화

CircularQueue.prototype.clear = function (size = DEFAULT_SIZE) {
  this.array = [];
  this.size = size;
  this.length = 0;
  this.head = 0;
  this.tail = 0;
}
profile
#UXUI #코린이

0개의 댓글