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;
}
}
반응형
'프로그래밍 > 알고리즘, 프로그래밍 언어' 카테고리의 다른 글
[알고리즘] 인접행렬(adjacency matrix) 구현 (JavaScript) (0) | 2021.08.10 |
---|---|
[알고리즘] Tree 자료구조 구현 (JavaScript) (0) | 2021.07.29 |
[알고리즘] Queue로 포장을 마치고 나가는 인원 수 구하기 (0) | 2021.07.27 |
[알고리즘] Stack으로 브라우저 '뒤로 가기' '앞으로 가기' 구현 (0) | 2021.07.27 |
[알고리즘] Stack자료구조 JavaScript로 구현 (0) | 2021.07.27 |
댓글