아이딕
아이딕 IT블로그
아이딕
전체 방문자
오늘
어제
  • 분류 전체보기 (44)
    • Algorithm (9)
      • BackJoon (0)
      • Programmers (5)
      • Data Structure (4)
    • Java (5)
    • Spring (1)
    • SQL (2)
      • MSSQL (1)
    • JavaScript (7)
    • React (3)
    • HTML (0)
    • CSS (1)
    • Build Tool (0)
      • Gradle (0)
      • Maven (0)
    • Tomcat (1)
    • Git (2)
    • IDE (3)
    • Error Log (1)
    • 개발 지식 (9)
    • 도서 (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • codingTest
  • springboot
  • 자바
  • 자바자료구조
  • 자바스크립트
  • Java
  • 호이스팅
  • 깃허브
  • 자료구조
  • Java 문자열 처리 최적화
  • 코딩테스트
  • ES6
  • java Data Structure
  • VSCode
  • 프로그래머스
  • 리액트
  • Git
  • 인텔리제이
  • JVM
  • 블록레벨스코프
  • 함수레벨스코프
  • 스코프
  • programmers
  • Algorithm
  • react
  • IntelliJ
  • JavaScript
  • GitHub
  • 변수호이스팅
  • 알고리즘

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
아이딕

아이딕 IT블로그

Algorithm/Data Structure

[Data Structure] 큐(Queue)란?

2023. 1. 16. 09:37
728x90
반응형

1. 큐(Queue)의 개념

큐(Queue)

큐(Queue)는 "줄을 서다"라는 의미를 갖고 있으며, 입구와 출구가 모두 뚫려 있는 터널과 같은 형태이다.

사람이 줄을 서서 기다린다는 것처럼 먼저 들어온 데이터가 먼저 나가는 형태의 구조로 LIFO(Last In First Out) 방식인 스택(Stack)과는 달리 FIFO(First In First Out)방식을 가지고 있다.  

 

Enqueue는 큐(Queue)에 데이터를 입력하는 동작이고, Dequeue는 큐(Queue)에 데이터를 출력하는 동작이다.

 

2. 스택(Stack)에서의 오버플로우(Overflow)와 언더플로우(Underflow)

- 오버플로우(Overflow) : 큐(Queue)의 크기만큼 데이터가 꽉 차서 데이터를 넣지 못할 때 발생한다.

- 언더플로우(Underflow) : 큐(Queue)이 비어 있는 상황에서 데이터를 꺼내려고 할 경우에 발생한다.

 

3. 자바(Java) 라이브러리 큐(Queue) 관련 메서드

큐(Queue) 관련 메서드

3 - 1. 데이터 추가( add(item), offer(item) )

공통점

- 큐(Queue)의 가장 뒷부분에 데이터를 추가하며 값 추가 성공 시 true를 반환한다.

 

차이점

- add(item) : 큐(Queue)가 꽉 찬 경우(Overflow), IllegalStateException 에러가 발생한다.

- offer(item) : 큐(Queue)가 꽉 찬 경우(Overflow), false를 반환한다. 

3 - 2. 데이터 삭제( remove(), poll() )

공통점

- 큐(Queue)의 가장 앞부분의 데이터를 반환 후 삭제한다.

 

차이점

- remove() : 큐(Queue)가 비어있을 경우(Underflow) NoSuchElementException 에러가 발생한다.

- pull() : 큐(Queue)가 비어있을 경우(Underflow) null를 반환한다. 

3 - 3. 데이터 읽기 ( element(), peek() )

공통점

- 큐(Queue)의 가장 앞부분의 데이터를 읽는다.

 

차이점

- element() : 큐(Queue)가 비어 있는 경우(Underflow) NoSuchElementException 에러가 발생한다.

- peek() : 큐(Queue)가 비어 있는 경우(Underflow)  null을 반환한다.

 

3 - 4. 기타(clear(), isempty())

- clear() : 큐(Queue)를 비운다.

- isempty() : 큐(Queue)가 비었는지 확인한다. 

 

4. 큐(Queue) 의 Enqueue와 Dequeue

- Enqueue : 큐(Queue)의 맨 뒤에 데이터를 추가

- Dequeue : 큐(Queue)의 맨 앞에 데이터를 삭제

 

5. 큐(Queue) 구현

import java.util.*

public class Main{
	public static void main(String[] args){
		Queue<Intger> s = new LinkedList<>(); // int형 큐(Queue) 선언
		
		s.offer(5);	// 큐(Queue)에 5추가
		s.offer(2);	// 큐(Queue)에 2추가
		s.offer(3);	// 큐(Queue)에 3추가
		s.offer(7);	// 큐(Queue)에 7추가
		s.poll();	// 큐(Queue)에 5삭제
		s.offer(1);	// 큐(Queue)에 1추가
		s.offer(4);	// 큐(Queue)에 4추가
		s.poll(); 	// 큐(Queue)에 2추가

		while(!s.empty()){
			System.out.print(s.poll() + " ");//poll() 먼저 들어온 원소부터 추출!
		}
	}
}
//실행 결과 ==> 3 7 1 4

 

6. 큐(Queue) 사용 사례

- 순서대로 처리 되는 것

- 프로세스 관리

- 너비 우선 탐색(BFS, Breadth-First-search)

- 캐시(Cache)

728x90
반응형

'Algorithm > Data Structure' 카테고리의 다른 글

[Data Structure] 우선순위 큐(Priority Queue)란?  (34) 2023.01.18
[Data Structure] 스택(Stack) 사용 예제 (웹 방문 기록)  (33) 2023.01.12
[Data Structure] 스택(Stack)이란?  (6) 2023.01.10
    'Algorithm/Data Structure' 카테고리의 다른 글
    • [Data Structure] 우선순위 큐(Priority Queue)란?
    • [Data Structure] 스택(Stack) 사용 예제 (웹 방문 기록)
    • [Data Structure] 스택(Stack)이란?
    아이딕
    아이딕
    IT, 개발, 공부, 정리, 기타

    티스토리툴바