Queue
큐는 먼저 집어 넣은 데이터가 먼저 나오는 FIFO 구조로 저장하는 형식을 말한다. 예를 들어 티켓 판매 부수에서 줄을 서서 기다리는 사람들은 온 순서대로 표를 사서 나갈 수 있다. 큐는 put(insert)과 get(delete)을 이용하여 구현된다. 그리고 front는 데이터를 get할 수 있는 위치를 rear는 데이터를 put할 수 있는 위치를 의미한다. 또 큐가 꽉 차서 더 이상 자료를 넣을 수 없는 경우(put 할 수 없는 경우)를 오버플로우, 큐가 비어 있어 자료를 꺼낼 수 있는 경우(get 할 수 없는 경우)를 언더플로우라고 한다.
Queue 삽입 : Enqueue
val queue: LinkedList<String> = LinkedList()
queue.add("하나")
queue.add("둘")
queue.add("셋")
queue.offer("넷")
add(e): 해당 큐의 맨 뒤에 전달된 요소를 삽입한다. 삽입 성공하면 true를 반환하고, 큐에 여유 공간이 없어 삽입에 실패하면 IllegalStateException을 발생
offer(e): 해당 큐의 맨 뒤에 전달된 요소를 삽입한다. 삽입 성공하면 true를 반환하고 큐에 여유 공간이 없어 실패하면 flase 반환
Queue 삭제 : Dequeue
//poll() 메소드를 이용한 요소의 반환 및 제거
println(queue.poll())
println(queue)
//remove() 메소드를 이용한 요소의 제거
println(queue.remove("셋"))
println(queue.remove())
println(queue)
실행 결과
하나
[둘, 셋, 넷]
true
둘
[넷]
remove(e): 해당 요소가 있으면 제거하고 true 반환, 없으면 false 반환
remove(): 헤드 요소를 출력하고 제거하지만 큐가 비어 있을 경우 예외 발생
poll(): 헤드 요소를 출력하고 제거하지만 큐가 비어 있음면 null을 반환
Queue 헤드 조회
println(queue.peek())
println(queue.element())
element(): 헤드 요소 조회 및 반환 하지만 큐가 비어 있을 경우 예외 발생
peek(): 헤드 요소 조회 및 반환 하지만 큐가 비어 있다면 null 반환
참고
https://ko.wikipedia.org/wiki/%ED%81%90_(%EC%9E%90%EB%A3%8C_%EA%B5%AC%EC%A1%B0)
tcpschool.com/java/java_collectionFramework_stackQueue
'자료구조' 카테고리의 다른 글
Hash Table (0) | 2022.07.28 |
---|---|
Stack (0) | 2022.07.19 |