JS Queue 구현

안수철·2023년 4월 13일
1
class Queue {
  constructor() {
    this.items = {};
    this.headIndex = 0;
    this.tailIndex = 0;
  }
  
  enqueue(item) {
    this.items[this.tailIndex] = item;
    this.tailIndex++;
  }
  
  dequeue() {
    const item = this.items[this.headIndex];
    delete this.items[this.headIndex];
    this.headIndex++;
    return item;
  }
  
  peek() {
    return this.items[this.headIndex];
  }
  
  getLength() {
    return this.tailIndex - this.headIndex;
  }
}

// 구현된 Queue 클래스 사용
const queue = new Queue();

// queue에 삽입 및 삭제
queue.enqueue(5); // {0:5}
queue.enqueue(2); // {0:5, 1:2}
queue.enqueue(3); // {0:5, 1:2, 2:3}
queue.enqueue(7); // {0:5, 1:2, 2:3, 3:7}
queue.dequeue(); // {1:2, 2:3, 3:7}
queue.enqueue(1); // {1:2, 2:3, 3:7, 4:1}
queue.enqueue(4); // {1:2, 2:3, 3:7, 4:1, 5:4}
queue.dequeue(); // {2:3, 3:7, 4:1, 5:4}

// 먼저 들어온 순서대로 출력
while (queue.getLength() != 0) {
  console.log(queue.dequeue()); // 3 7 1 4
}

0개의 댓글