자료구조 큐(Queue)
큐(Queue)의 개념
큐(Queue)는 스택(Stack)과 반대로 '선입선출 FIFO(First In First Out)'
의 구조를 가지고 있습니다. 말 그대로 먼저 들어온 것이 먼저 나가는 구조이기 때문에 데이터를 추가한 순서대로 제거할 수 있기 때문에 스트리밍 등 소프트웨어 개발에서 응용되고 있습니다.
좋은 예로 은행의 번호표가 있습니다. 은행에 방문해 기다리는데 늦게 온 손님이 먼저 온 저보다 먼저 업무를 보면 안되겠죠? 이러한 상황 때문에 은행에서는 먼저 온 손님이 늦게 온 손님보다 먼저 서비스를 받게 하기 위해 번호표를 나눠줍니다.
이러한 은행의 번호표의 체계가 큐(Queue)입니다.
큐(Queue)의 연산
1. Enqueue (Insertion)
: 큐 맨 뒤에 어떠한 요소를 추가 (추가로 온 손님에게 번호표 발급)
2. Dequeue (Deletion)
: 큐 맨 앞쪽의 요소를 삭제 (창구 업무를 종료하고 나간 손님의 번호표를 대기목록에서 삭제)
3. Peek
: front에 위치한 데이터를 읽음 (다음 서비스를 받은 손님의 번호 확인)
4. Front
: 큐의 맨 앞의 위치(인덱스) (다음 서비스를 받을 차례인 손님의 번호)
5. Rear
: 큐의 맨 뒤의 위치(인덱스) (가장 마지막에 온 손님의 번호)
구현
큐(Queue)도 스택과 마찬가지로 배열과 연결리스트를 이용하여 구현할 수 있습니다.
스택(Stack) 알아보기
2021.03.22 - [자료구조 & 알고리즘 & 코딩테스트/자료구조] - [자료구조] 스택(Stack)이란 무엇인가? (스택 개념, 연산, 구현)
'Programming > Java' 카테고리의 다른 글
[Java] 현재 실행 중인 클래스/메서드 이름 추출하는 방법 (0) | 2021.05.10 |
---|---|
[Java] 문자열 분해(배열로 변환) toCharArray(), new String() 사용법 & 예제 (0) | 2021.05.07 |
[Java] 제네릭(Generic) 사용법 / 개념 및 예제 정리 (0) | 2021.03.25 |
[Java] 문자열(알파벳) 대문자 / 소문자로 변환 toUpperCase(), toLowerCase() (0) | 2021.03.25 |
[Java] String / StringBuffer / StringBuilder 사용법 및 차이점 - 불변 문자열, 가변 문자열 (2) | 2021.03.25 |