article thumbnail image
Published 2022. 7. 16. 22:41

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
복사했습니다!