코딩하는 고릴라

[Algorithm] 큐 구현(Javascript) 본문

Algorithm

[Algorithm] 큐 구현(Javascript)

코릴라입니다 2023. 11. 13. 22:56

1. Queue 클래스 선언 및 생성자

 

Line 1: Queue라는 이름으로 클래스를 선언

Line 2 : 생성자를 이용해 기본 구조 설정

Line 3 : Queue 내부에 값을 저장할 객체를 선언

 - 배열이 아니라 객체를 선언한 이유는 메모리 낭비를 방지하기 위함입니다.

 - 후에 구현하게 될 push, poll의 방법으로는 push와 poll을 반복하다보면 배열의 앞부분에 값이 남아있지만 접근할 방법이 사라져 해당 메모리 공간이 낭비되기 때문에 객체로 선언해 이를 보완했습니다.

Line 4 : Queue의 앞부분

Line 5 : Queue의 끝부분


2. isEmpty() 구현

 

Line 2 : rear와 front의 값이 일치하면 이는 Queue 내부에 아무런 값도 저장되어 있지 않음을 의미

Line 4 : rear와 front의 값이 일치하지 않다면, Queue 내부에 값이 존재함을 의미

 

 - 뒤에 설명하게 될 push 함수를 통해 값을 넣게되면, rear의 값이 1씩 증가된다.

 - 따라서 front와 rear값에서 차이가 발생하게 되고, 이 차이를 통해 Queue가 비어있는지 아닌지 알 수 있다.


3. size() 구현

 

Line 2 : rear에서 front를 빼준 결과값이 Queue의 크기를 나타냄


4. push() 구현

 

Line 2 : 현재의 rear값을 1 증가시키며 해당 rear값을 인덱스로 하는 부분에 value를 저장


5. peek() 구현

 

Line 3 : 큐가 비어있을 경우에는 null을 반환한다.

Line 5 : 큐가 비어있지 않은 경우에는 현재의 front값에 1을 더한 값을 인덱스로 하는 부분의 값을 반환한다.

    해당 과정에서 front의 값은 변화하지 않는다.


6. poll() 구현

 

Line 3 : 큐가 비어있을 경우에는 null을 반환한다.

Line 5 : 큐가 비어있지 않은 경우에는 현재의 front값을 1 증가시킨 후 해당 값을 인덱스로 하는 부분의 값을 반환한다.

    해당 과정에서 front의 값은 1씩 증가하게 된다.


7. 만들어진 큐의 작동 예

 

반응형