ALGORITHM/Theory

자료구조(큐)

Harimad 2022. 3. 6. 15:32

참고자료: https://velog.io/@longroadhome/자료구조-JS로-구현하는-.큐-Queue

 

[자료구조] JS로 구현하는 큐 (Queue)

미루고 미루던 자바스크립트로 큐를 구현해야하는 순간이 오고야 말았다. 알고리즘 문제를 풀다 보면 큐(Queue) 자료구조를 이용해서 문제를 해결하는 경우를 종종 만날 수 있다. 대표적으로 BFS

velog.io


코드

<script>
class Queue {
  constructor() {
    this.storage = {}; //값을 저장할 객체
    this.front = 0; // 첫 원소를 가리킬 포인터
    this.rear = 0; // 마지막 원소를 가리킬 포인터
  }

  //크기 구하기
  size() {
    if (this.storage[rear] === undefined) return 0; // rear가 가리키는 값이 없을 때가 아무 데이터가 없는 경우이다
    else return this.rear - this.front + 1;
  }

  add(value) {
    if (this.size === 0) this.storage['0'] = value; //큐에 데이터가 없는 경우
    else {
      this.rear += 1;
      this.storage[this.rear] = value;
    }
  }

  popleft() {
    let temp; // 첫 원소 값을 임시로 담을 변수
    if (this.front === this.rear) { //데이터가 1개 있는 경우
      temp = this.storage[this.front];
      delete this.storage[this.front];
      this.front = 0;
      this.rear = 0;
    } else { // 데이터가 2개 이상인 경우
      temp = this.storage[this.front];
      delete this.storage[this.front];
      this.front += 1;
    }
    return temp;
  }
}
</script>