Queue

CodeLog·2020년 12월 5일
0

Queue

사전적 의미의 Queue

  1. 명사 英 (무엇을 기다리는 사람자동차 등의) 줄
  2. 명사 컴퓨터 큐, 대기 행렬
  3. 동사 英 줄을 서서 기다리다

데이터들이 줄을 서 있는 것을 상상하자!
일반적으로 음식점이나 카페에 손님이 많을 경우 줄을 서서 맨 처음 온 손님부터 응대를 하는원리와 같다.
큐에 데이터를 추가하면 가장 뒤에취가가 되고 꺼낼때는 제일먼저 넣은 데이터를 꺼낸다.(First in First Out)FIFO라한다.

이미지출처:https://velog.io/@hwamoc/%EC%9E%90%EB%A3%8C%EA%B5%AC%EC%A1%B0-%EC%8A%A4%ED%83%9DStack-%ED%81%90Queue

//자료구조 Queue
class Queue {
  constructor() {
    //queue 저장될 데이터
    this.storage = {};
    this.front = 0;
    this.rear = 0;
  }
	//storage의 길이
  size() {
    return this.rear - this.front;
  }
  //추가되는 데티터를 큐의 뒤에 추가합니다
  enqueue(element) {
    this.storage[this.rear]= element;
    this.rear++;
  }
  //데이터를 큐의 앞에서 제거하고 반환합니다
  dequeue() {
    let currnetData = this.storage[this.front];
    if(this.rear === 0){
      return '해당 storage가 비어있습니다.'
    }
    delete this.storage[this.front];
    //객체가 가지는 요소의 수 보다 dequeue의 횟수가 많으면 size()의 값이 음수값으로 되는것을 방지함.
    if(this.rear - this.front  <= 0){
      return 0;
    }
    this.front++;
    return currnetData;
  }
}

let queue = new Queue();
queue.enqueue(1);
console.log(queue.storage);//{0: 1}
queue.enqueue(2);
console.log(queue.storage);//{0: 1, 1: 2}
queue.enqueue(3);
console.log(queue.storage);//{0: 1, 1: 2, 2: 3}
console.log(queue.dequeue());//1
console.log(queue.storage);//{1: 2, 2: 3}
console.log(queue.dequeue());//2
console.log(queue.storage);//{2: 3}
profile
개발로그

0개의 댓글