큐(queue) 자바로 만들어보기

2019. 3. 14. 20:28자료구조

이전 글에 자료구조 스택을 자바로 구현한 적이 있었다.

스택과 마찬가지로, 큐도 알아 본 후 자바로 만들어 보겠다.

큐(Queue)

 스택 LIFO 마지막에 들어온 것이 처음 나간다. Last In First Out이라고 설명한 적이 있다. 

큐는 스택과 다르게 FIFO 먼저 들어 간 것이 먼저 나가게 되는 것이다. 


위의 그림과 같이 왼쪽에서 들어간 후 다음 데이터가 들어오면 데이터는 오른쪽으로 밀리게 되는 형태이다.


위의 그림은 큐의 메소드를 만들어 본 것이다.

스택과 달리 큐는 데이터가 들어갈수록 배열의 숫자가 뒤로 가기 때문에, 고민을 조금 했었다. (물론 ArrayList를 사용하지 않고 배열을 사용한 이유는 효율 적인 면도 있지만, 좀더 고민하기 위해서)


Method 

push

큐 자료구조를 만드는 방법은 여러가지 방법이 있겠지만, 우선 저는 back이라는 전역 변수를 만들었고, 큐에 숫자를 넣을 때마다, back++ 하는 방법을 선택했다. push 메소드에서 고민을 많이 했었는데, 큐를 설명 할 때처럼, 숫자를 넣을 때마다, 먼저 들어 갔던 데이터들이 배열 뒤로 가야할지, 아니면 나중에 들어온 데이터들이 배열 뒤로 가야할지 고민을 많이 했었지만, 원래 있던 데이터들이 데이터가 들어 올때마다 한칸씩 이동하면 효율이 좋을 것 같지 않아 넣는 것은 배열 순서대로 넣기로 했다.           

pop

큐를 넣을 때, 배열을 0번째 부터 1 -> 2 -> 이런 방향으로 갔기 때문에, 뺄 때도 0 -> 1 -> 2 이런 방향으로 가야 할 것이다. 전역 변수 back 과 마찬가지로 front가 있는데, 제일 앞단을 가리키는 것이다. 그래서 pop으로 데이터를 뺐을 경우에 출력으로 빼준다음 int[front] = 0과 같이 pop으로 빼내는 값을 없애 버렸다. 그 후 front++ 전역변수 front의 값을 1을 더해준다.

size, empty, back, front

메소드들도 있지만, 간단하니 설명은 생략하도록... 하겠습니다.

'자료구조' 카테고리의 다른 글

List, Map 과 Set에 대해 조금만 알아보자.  (0) 2019.05.09