큐는 선형 자료구조로 먼저 들어온 데이터가 먼저 나가는 선입선출(FIFO: First In First Out)의 구조를 가지고 있다.
큐는 뒤에서 새로운 원소가 추가되고 앞에서 새로운 데이터가 하나씩 삭제되는 구조를 가지고 있다. 구조상으로 큐가 스택과 다른 점은 스택의 경우, 삽입과 삭제가 같은 쪽에서 일어나지만 큐에서는 삽입과 삭제가 다른 쪽에서 일어난다는 것이다.
큐의 연산
큐의 삽입 연산은 enqueue연산이라고 불리우며, 큐에 요소를 추가하는 연산으로서 큐의 맨 뒤에 원소를 추가한다. 이때 큐의 제일 뒤를 가리키는 용어를 rear이라고 한다.
큐의 삭제 연산은 dequeue연산이라고 불리우며, 큐에 요소를 삭제하는 연산으로서 큐의 제일 앞의 원소를 삭제한다. 이때 큐의 제일 앞을 가리키는 용어를 front라고 한다.
front와 rear의 초기 값은 -1이다. 그러다가 하나 원소가 증가하면 rear을 하나 증가하고 그 위치에 데이터가 저장된다. 원소를 하나 삭제할 때에는 front가 하나 증가하고 그 위치의 원소를 삭제한다.
자바에서의 큐의 활용
Java.util.Queue
큐에 필요한 연산을 선언해놓은 인터페이스이다. LinkedList 클래스를 queue 인터페이스의 구현체로 많이 사용
주요 메소드
- Offer()
- poll()
- isEmpty()
- size()
등이 있다.
큐의 활용 예제
버퍼 (사용자의 입력을 a b 이렇게 받아서 enter 입력 들어오면 그대로 abc 출력
'CS > data structure' 카테고리의 다른 글
Tree (트리) - 1 (0) | 2021.06.06 |
---|---|
List 리스트 (0) | 2021.03.27 |
Graph: 그래프 (0) | 2021.03.20 |
리스트(list) (0) | 2021.02.12 |
스택(Stack) (0) | 2021.02.11 |