Queue는 개념적으로 stack과 유사하며 둘 다 순차적인 구조를 지닌다. 그러나 Queue는 First In/First Out(FIFO)형태를 따른다.
Queue의 두 가지 연산으로는 enqueue(큐에 데이터를 넣는 연산), dequeue(큐에서 데이터를 꺼내는 연산)이 있다.
//Queue
class Node {
constructor(data) {
this.data = data;
this.next = null;
}
}
class Queue {
constructor() {
//head은 처음을 가리키고 head는 끝을 가리킨다.
this.count = 0;
this.head = null;
this.rear = null;
}
enqueue(data) {
let node = new Node(data);
if (!this.head) {
this.head = node;
} else {
this.rear.next = node;
}
this.rear = node;
return ++this.count;
}
dequeue() {
if (!this.head) {
return false;
}
let data = this.head.data;
this.head = this.head.next;
--this.count;
return data;
}
front() {
console.log(this.head && this.head.data);
}
}
let queue = new Queue();
queue.enqueue(100);
queue.enqueue(200);
queue.enqueue(300);
console.log(queue.dequeue());
queue.front()
console.log(queue)