본문 바로가기
프로그래밍/알고리즘, 프로그래밍 언어

[알고리즘] Queue 자료구조 JavaScript로 구현

by 제이콥J 2021. 7. 27.

Queue 자료구조 설명

- 데이터가 입력된 순서대로 처리되는 자료구조

- FIFO(First In First Out) : 가장 먼저 들어간 데이터는 가장 먼저 나올 수 있음

- LILO(Last In Last Out) : 가장 나중에 들어간 데이터는 가장 나중에 나올 수 있음

 

코드 작성 포인트

1. Queue 자료를 담기 위한 객체나 배열을 변수로 선언하기

2. Queue가 배열이라면 push/pop, shift/unshift를 통해 자료를 추가하고 빼기

3. Queue처음과 마지막 엘리먼트 또는 인덱스변수로 선언하기

4. While문이 자주 등장하며 조건은 'Queue의 길이가 0을 초과할 경우'

 

Queue 구현 코드 (JavaScript)

// Queue 생성하기 위한 class 정의하기

class Queue {

  //queue constructor 생성 : 가장 앞에 있는 요소는 front, 가장 뒤에 있는 요소는 rear
  constructor() {
    this.storage = {};
    this.front = 0;
    this.rear = 0;
  }
  
  // rear와 front로 queue의 사이즈를 구하기
  size() {
    return this.rear - this.front;
  }
  
  
  // queue에 element를 추가하며,this.rear는 키로 element를 값으로 하여 storage에 할당
  // this.rear는 앞으로 추가될 엘리먼트의 인덱스를 나타냄
  enqueue(element) {
    this.storage[this.rear] = element;
    this.rear += 1;                    
  }
  
  // queue에서 element를 제거 한 뒤 해당 element를 반환
  // this.front에 해당하는 element는 큐에서 삭제하며 반환
  dequeue() {
    if (this.size() === 0) {      // size가 0이라면 아무 일도 일어나지 않음
      return;
    }
    const result = this.storage[this.front];
    delete this.storage[this.front];
    this.front += 1;
    return result;
  }
}
반응형

댓글