storage
front
rear
=> Queue는 FIFO, LILO
가장 앞에 있는 값 front , 뒤에있는 값 rear
=> constructor() 생성 this.storage, front, rear
queue의 사이즈를 구해야한다.
=> queue는 추가 될 때 , rear 값이 커지고, 삭제될때 front가 변경이 되기 때문에, 각 값을 알아야 size()를 구할 수 있다.
그러므로 , size = rear - front
queue에 element를 추가한다.
=> 새롭게 추가될 요소의 index를 나타내는 rear값을 키로, 요소를 값으로 하여 storage에 할당해준다. this.rear는 다음 인덱스를 가리키게 해서 새로운 요소에 대비한다.
queue에서 element를 제거한 후 , 해당 element를 반환한다.
a. => 만약 size가 0이라면 아무일도 일어나지 않는다.
(rear - front가 0이면)
b. => this.front + 1 로 가장 앞에 있는 요소를 다시 설정한 후, 변수에 저장하고, Queue 에서 삭제한다.
(그래야 먼저 들어온 값이 먼저 삭제된다)