728x90
큐의 정의(Definition of Queue)
🎈 위 그림에서 볼 수 있듯, Queue의 실행 순서는 FIFO로 진행된다.
FIFO란 First In First Out의 약자로서, 처음 들어간 값이 가장 먼저 나올 수 있다. 선입선출이라고 생각하면 쉽다.
Queue는 기본적으로 추가( add() ), 삭제( remove() ) 기능을 사용하여 다루며,
마지막 값 보기( peek() ) 기능처럼 본인이 필요한 기능을 만들어 사용하면 된다.
JavaScript의 class를 이용하여 Queue를 만들어 보겠다.
😐 위에서 볼 수 있듯, Queue의 전체 뼈대는 생성자(constructor)를 이용하여 array를 선언해준다.
add()에서는 Array.prototype.unshift()를 이용하여, 값이 항상 Queue의 앞으로 들어가게 구성해준다.
remove()에서는 Array.prototype.pop()를 이용하여, 항상 (먼저 들어간)마지막 값이 나올 수 있게 구성한다.
peek()에서는 index에 [this.data.length-1]을 넣어줘서 값이 있다면 마지막 값을, 없다면 undefined를 return하게 해준다.
🎉이렇게 class를 작성해주면, FIFO(First In First Out)기능을 하는 기본 Queue를 만들어낼 수 있다.
다음 글에서는 값이 다른 2개의 큐(Queue)를 1개의 큐(Queue)로 만들어보는 자료구조를 이용한 알고리즘에 대해 작성해보겠다.
Full Code
class Queue { |
constructor() { |
this.data = []; |
} |
add(record) { |
this.data.unshift(record); |
} |
remove() { |
return this.data.pop(); |
} |
peek() { |
return this.data[this.data.length - 1]; |
} |
} |
'JavaScript > Data Structure' 카테고리의 다른 글
[Linked List] Find the Midpoint(Linked Lists의 중간 Node 찾기) (0) | 2020.01.09 |
---|---|
[Linked List] Linked List(연결된 리스트) (0) | 2020.01.08 |
[Queue & Stack]2개의 스택(Stack)으로 큐(Queue)만들기(Queue from Stacks) (0) | 2020.01.06 |
[Stack] 스택(Stack) (0) | 2020.01.06 |
[Queue] 큐(Queue)를 이용한 값 번갈아 넣기 알고리즘(weave algorithm) (0) | 2020.01.04 |