본문 바로가기
js/Data Structure

Queues(정리중)

by Nick Black 2020. 12. 3.
반응형

Queues?

Queues란 앞서 배운 Stack과 같이 요소를 추가하거나 제거 할수있는 위치에 제한이 있는 추상 데이터 유형이다

이러한 제한은 요소는 FIFO(First In First Out) 이다

 

Queue는 놀이공원의 줄처럼 생각 할수있습니다.

 

앞쪽에 있는 사람이 가장 먼저 이용을 하고 다음 줄을 서는 사람들은 맨뒤쪽으로 오겠죠?

이처럼 대기열에 처음 들어간 사람이 놀이기구를 먼저 이용을 하고
가장 최근에 줄을 선사람이 (대기열에 추가가 되지 않는다면) 제일 마지막에 놀이기구를 이용을 하겠죠

대기열에서 주요 초점은 요소가 제거가 되는 head와 tail 이 있습니다

필수기능

대기열과 관련된 두가지 작업

enquque(el)// quque의 끝에 요소 el을 추가한다
dequque()// quque의 대기열의 head에 요소를 제거한다

또한 quque는 계산을 저장하기 위해서 다음 작업으로 구현되는 경우도 있다

size()//quque의 현재크기를 반환 한다
peek()//quque를 변경하지 않고 quque의 헤드에 있는 요소를 반환한다

 

필수기능을 이용한 JavaScript구현

class Queue {
  constructor() {
    this.storage = {};
    this.head = -1;
    this.tail = -1;
  }

  size() {return Object.keys(this.storage).length}

  enqueue(element) {
    if (this.head === -1){
      this.head++
    }
    this.tail++
    this.storage[this.tail] = element
  }

  dequeue() {
    if (this.size() > 0){
      let remove = this.storage[this.head]
      delete this.storage[this.head]
      this.head++
      return remove
    }
  }
  peek(){
    if (this.head == -1){
      return 'queue is empty'
    }
    else{
      return this.storage[this.head]
    }
  }
}
반응형

'js > Data Structure' 카테고리의 다른 글

Stack  (0) 2020.12.03