Queue
- FIFO(First In First Out)의 성질을 가진 자료구조
- 먼저 들어간 데이터가 먼저나오게되는 구조
- 사용예
- 우선 순위가 같은 작업 예약 (프린터의 인쇄 대기열)
- 은행 업무
- 콜센터 고객 대기시간
- 주로 BFS(너비 우선 탐색)에 사용된다.
- 자주 사용되는 함수
- add : 데이터를 넣는것
- poll : 데이터를 꺼냄 (최상단 자료를 지우고 반환한다.)
- peek : 데이터를 꺼냄 (최상단 자료를 지우지 않고 반환한다.)
- Queue의 구조
- Queue의 선언
- Queue의 사용(연습문제)
1. Queue의 구조
- 위 그림은 Queue의 구조이다. Stack과는 달리 데이터가 들어오는곳과 나가는곳이 다르다.
- 데이터들을 add하면 먼저 들어간 데이터가 먼저 나가게된다.
- 데이터를 red, white, black, blue 순으로 넣어서 데이터가 나갈때도 역시 red, white, black, blue 순으로 나간다.
2. Queue의 선언
public class Main {
public static void main(String[] args) {
Queue<String> que = new LinkedList<>();
que.add("red");
que.add("blue");
System.out.println(que.poll());
System.out.println(que.poll());
}
}
- 위 코드의 실행결과는 red blue 이다.
- 먼저 들어간 red가 먼저 나오고 뒤에들어간 blue가 나오는것이다.
- 두 개의 데이터가 들어갔고 두 개의 데이터를 poll을 사용하여 꺼냈으니, 현재 Queue에는 데이터가없는 비어있는 상태이다.
public class Main {
public static void main(String[] args) {
Queue<String> que = new LinkedList<>();
que.add("red");
que.add("blue");
System.out.println(que.peek());
System.out.println(que.peek());
}
}
- 위 코드의 실행결과는 red red 이다.
- 먼저 들어간 red라는 데이터가 먼저 출력되는것이고, peek를 사용하였기때문에 poll과 달리 데이터를 꺼낼때 지우지않고 그대로 둔 상태에서 반환만 해줬기때문에
- Queue에는 현재 red blue 2개의 데이터가 담겨있는 것이다.
3. Queue의 사용(연습문제)
아래의 문제를 보고 사용법을 익혀보자
https://do-hyeon.tistory.com/218
'Language > Structure' 카테고리의 다른 글
[Structure] Stack (Last In First Out) (0) | 2021.11.07 |
---|---|
[Structure] Array (배열) (0) | 2021.10.31 |