- 명사 英 (무엇을 기다리는 사람자동차 등의) 줄
- 명사 컴퓨터 큐, 대기 행렬
- 동사 英 줄을 서서 기다리다
데이터들이 줄을 서 있는 것을 상상하자!
일반적으로 음식점이나 카페에 손님이 많을 경우 줄을 서서 맨 처음 온 손님부터 응대를 하는원리와 같다.
큐에 데이터를 추가하면 가장 뒤에취가가 되고 꺼낼때는 제일먼저 넣은 데이터를 꺼낸다.(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}