[자료 구조 in JavaScript] 큐(Queue)
15940 단어 data structuredata structure
Queue
큐(queue)란 사람들이 줄을 서는 것처럼 순차적이고 순서가 있는 자료구조이다. 줄에서 먼저 기다리고 있던 사람이 먼저 나가는 것과 같은 선입선출(FIFO, First In First Out) 원칙을 따른다.
큐에 enqueue(새로운 요소 삽입)되는 위치를 back, dequeue(요소 제거)되는 위치를 front라고 한다.
Implementation of Queue
Queue
큐는 배열을 사용해 구현할 수 있다.
class Queue {
constructor() {
this.items = [];
}
// enqueue(element)
// dequeue()
// front()
// rear()
// size()
// print()
}
}
Enqueue
enqueue()
는 큐의 가장 마지막 위치, 즉 back에 새로운 요소를 삽입하는 메소드이다.
enqueue(element) {
this.items.push(element);
}
Dequeue
dequeue()
는 큐의 가장 첫 번째 위치, 즉 front에 위치한 요소를 제거후 반환하는 메소드이다.
dequeue() {
return this.items.shift();
}
front, rear
front()
는 큐의 front에 위치한 요소를, rear()
는 큐의 back에 위치한 요소를 반환하는 메소드이다.
front() {
return this.items[0];
}
rear() {
return this.items[this.items.length - 1];
}
size
size()
는 큐의 크기를 반환하는 메소드이다. 만약 큐가 비어있을경우 메시지를 반환한다.
size() {
return this.items.length ? this.items.length : 'It is Empty!!';
}
print()
는 큐의 요소들을 콘솔에 출력하는 메소드이다.
print() {
console.log('Index : Element');
for (let i = 0; i < this.items.length; i++) {
console.log(`${i} : ${this.items[i]}`);
}
}
Complete Code
class Queue {
constructor() {
this.items = [];
}
enqueue(element) {
this.items.push(element);
}
dequeue() {
return this.items.shift();
}
front() {
return this.items[0];
}
rear() {
return this.items[this.items.length - 1];
}
size() {
return this.items.length ? this.items.length : 'It is Empty!!';
}
print() {
console.log('Index : Element');
for (let i = 0; i < this.items.length; i++) {
console.log(`${i} : ${this.items[i]}`);
}
}
}
Example
const q = new Queue();
q.enqueue(10);
q.enqueue(2);
q.enqueue(5);
q.enqueue(999);
q.print();
q.dequeue();
q.front();
q.rear();
q.size();
// output:
Index : Element
0 : 10
1 : 2
2 : 5
3 : 999
10
2
999
3
Reference
Author And Source
이 문제에 관하여([자료 구조 in JavaScript] 큐(Queue)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@iwaskorean/자료-구조-in-JavaScript-큐Queue저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)