Queue


Queue의 사전적 의미란 무엇인가를 기다리는 사람, 차량 등의 줄 혹은 줄을 서서 기다리는 것을 의미한다. 즉 먼저 들어온 data가 가장 먼저 나가는 형태인 FIFO(First In First Out)형태, 다른 말로는 가장 나중에 들어온 data가 가장 나중에 나가는 형태인 LILO(Last In Last Out)형태의 구조를 가지고 있다.

-Enqueue : 큐에 데이터를 넣는 기능
-Dequeue : 큐에서 데이터를 꺼내는 기능

 

Queue의 특징


  • FIFO, LILO 구조
  • 한 쪽 끝은 프런트(front)로 정하여 삽입 연산만 수행
  • 다른 한 쪽 끝은 리어(rear)로 정하여 삭제 연산만 수행
  • 컴퓨터 버퍼에서 주로 사용되며 대량의 작업이 입력 되었으나 처리를 하지 못할 때, 버퍼(큐)를 만들어 대기 시킴
  • 멀티 태스킹을 위한 프로세스 스케쥴링 방식을 구현하기 위해 많이 사용

 

Queue의 사용법


  • Queue 선언
//자바에서 Queue는 LikedList를 활용하여 생성하여야 한다. 
//따라서 LinkedList와 Queue모두 import가 되어있어야한다 
import java.util.LinkedList; 
import java.util.Queue; 

// Integer 형 queue 선언 
Queue<Integer> queue_int = new LinkedList<Integer>(); 

// String 형 queue 선언
Queue<String> queue_str = new LinkedList<String>();
  • Queue에 Data 추가하기

 

// 데이터 추가는 add(value) 또는 offer(value) 를 사용한다.
queue_int.add(1); 
queue_str.offer("one");  

//add(value) 메소드의 경우 만약 삽입에 성공하면 true를 반환하고 
//공간이 부족하여 삽입에 실패하면 IllegalStateException을 발생시킨다.

 

  • Queue에서 Data 빼내기
// queue에 첫번째 값을 반환하고 제거 비어있다면 null
queue_int.poll();  

// queue에 첫번째 값 제거 
queue_int.remove(); 

// queue 초기화
queue_int.clear();

ArrayList를 활용하여 Queue자료구조 구현해보기


//다양한 데이터 타입을 다룰 수 있도록 Java Genric 타입 활용 

public class MyQueue<T> { 
   private ArrayList<T> queue = new ArrayList<T>(); 
    
   public void enqueue(T data){ 
      queue.add(data);
   } 
  
   public T dequeue(){ 
      if(queue.isEmpty()){ 
         //queue의 데이터가 없을 시 null을 return 
         return null; 
      } 
      return queue.remove(0); 
   } 
}

'자료구조' 카테고리의 다른 글

Hash Table  (0) 2021.10.24
Double Linked List  (0) 2021.10.15
Single Linked List  (0) 2021.10.15
Stack  (0) 2021.10.15
알고리즘 복잡도 표현 방법  (0) 2021.10.15

+ Recent posts