심심한잉여의 잡동사니

[자료구조] 큐(Queue) (feat. java) 본문

코딩일기/자료 구조

[자료구조] 큐(Queue) (feat. java)

심심한잉여 2022. 5. 1. 12:15
반응형

Queue(큐)란?
큐는 자료구조의 스택과 반대의 수조라고 볼 수 있다. 큐는 FIFO(선입선출)의 형태를 가지고 있으며 가장 먼저 들어온 데이터가 가장 먼저 나가는 구조를 뜻한다.


- Enqueue : 맨 뒤에 데이터를 추가
- Dequeue : 큐 맨 앞쪽의 데이터를 삭제

특징

1. 큐의 한쪽을 Front로 정하여 삭제 연산만을 수행하게 된다.
2. Front와 반대 쪽을 Rear로 정하여 삽입연산만 수행하게 된다.
3. 그래프 넓이 우선 탐색(BFS)에서 사용된다.
4. 많은 입력을 처리 하지 못할 때, 버퍼(큐)를 만들어 대기 시킨 후 먼저 들어온 입력먼저 처리한다.


Queue 예제

Queue<Integer> queue = new LinkedList<Integer>();

queue.offer(1);
queue.offer(2);
queue.offer(3);
queue.offer(4);
queue.offer(5);

while(!queue.isEmpty()){
	System.out.println(queue.poll());
}

 

위 코드와 같이 작성을 하게 된다면 콘솔에 1,2,3,4,5가 입력이 될 것이다.

만일 위 순서와 같이 스택으로 사용을 헀다면 5,4,3,2,1이 나왔을 것이다.
이제 큐와 스택의 차이를 어느정도 알게 되었을 것이다.


큐(Queue)의 메소드

- isEmpty() : 큐가 비었는지 확인해주는 함수 비었다면 true, 아니면 false를 반환
- add() : 큐에 값 추가
- poll() : 맨 앞의 값을 삭제하고 그 값을 반환
- remove() : 맨 앞의 값을 삭제
- size() : 큐의 크기를 반환
- peek() : 맨 앞의 값을 반환(삭제 x)


 

반응형