일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- IF
- 스캐너클래스
- 자료구조
- MySQL
- Scanner
- 유비쿼터스
- 데이터
- IF문
- 1차원배열
- Spring
- 스캐너
- java
- 백준알고리즘
- error
- C언어
- java프로그래밍
- 파이썬프로그래밍기초
- FOR문
- 하드웨어
- IFELSE
- 변수
- for
- 알고리즘
- 백준
- 배열
- 기본
- 함수
- 반복문
- 자바
- Scanner class
Archives
- Today
- Total
정리하고기록하자
큐(Queue) 본문
반응형
큐(Queue)
큐란 컴퓨터의 기본적인 자료구조의 한가지로, 먼저 집어 넣은 데이터가 먼저 나오는 FIFO ( First In First Out ) 구조로 저장하는 형식이다.
ex ) 줄서기와 같이 처음 선 사람이 처음 통과하는 것처럼, 가장 먼저 넣은 데이터를 가장 먼저 꺼낼수 있는 구조.
큐의 선언
import java.util.LinkedList;
import java.util.Queue;
public class Main {
public static void main(String[] args){
Queue<String> que = new LinkedList<String>();
que.add("Hello");
que.add("World");
System.out.print(que);
}
}
주요 메소드
기능 | Throws exception | Returns special value |
삽입(Insert) | add(e) | offer(e) |
삭제(Remove) | remove() | poll() |
헤드 조회(Head Examine) | element() | peek() |
큐의 연산
- 큐는 FIFO 를 따른다.
- add ( item ), offer( item ) : item을 리스트의 끝부분에 추가한다.
- remove(), poll() : 리스트의 첫 번째 항목을 제거한다.
- peek(), element() : 큐에서 가장 위에 있는 항목을 반환한다.
add( item ), offer( item ) 리스트에 추가
- add(item) : 추가 성공할 경우 true로 반환한다. 하지만 사용 가능한 공간이 없어 추가 실패 시 IllegalStateException 발생한다.
- offer(item) : 추가 성공할 경우 true로 반환한다. 하지만 사용 가능한 공간이 없어 추가 실패 시 false 로 반환한다.
import java.util.LinkedList;
import java.util.Queue;
public class Main {
public static void main(String[] args){
Queue<String> que = new LinkedList<String>();
que.add("여기는 add");
que.offer("add말고 offer");
que.add("여기는 add 2번째");
que.offer("add말고 offer 2번째");
System.out.println(que);
}
}
remove() , poll() 리스트의 첫 번째 항목 삭제
- remove() : 헤드 요소를 조회하고 제거한다. 하지만 큐가 비어 있다면 예외를 발생시킨다.
- poll() : 헤드 요소를 조회하고 제거한다. 하지만 큐가 비어 있다면 null 반환
import java.util.LinkedList;
import java.util.Queue;
public class Main {
public static void main(String[] args){
Queue<String> que = new LinkedList<String>();
que.add("여기는 add");
que.remove(); // 여기서 삭제
que.offer("add말고 offer");
que.add("여기는 add 2번째");
que.offer("add말고 offer 2번째");
que.poll(); // 끝에서 삭제
System.out.println(que);
}
}
* 최초 add 뒤에서 remove 로 삭제 후에 맨 마지막에서 poll로 삭제 해도 콘솔로 보면 첫번째, 두번째 항목이 삭제된 것을 확인 할 수 있다.
peek(), element() 큐에서 가장 위에 있는 항목을 반환한다.
- element() : 헤드 요소를 조회하고 반환한다. 하지만 큐가 비어 있다면 예외 발생한다.
- peek() : 헤드 요소를 조회하고 반환한다. 하지만 큐가 비어 있다면 null 반환한다.
import java.util.LinkedList;
import java.util.Queue;
public class Main {
public static void main(String[] args){
Queue<String> que = new LinkedList<String>();
que.add("여기는 add");
// que.remove(); // 여기서 삭제
que.offer("add말고 offer");
que.add("여기는 add 2번째");
que.offer("add말고 offer 2번째");
que.poll(); // 끝에서 삭제
System.out.println(que.element());
System.out.println(que.peek());
System.out.println(que);
}
}
que.element() , que.peek() 을 찍어봤을때 제일 상단에 위치하고 있는 항목을 가져 올 수 있다
큐의 사용 사례
- 우선순위가 같은 작업 ( ex : 인쇄 대기열 )
- 선입선출이 필요한 대기열 ( 티켓 카운터, 주식 )
- 콜센터 고객 대기시간
- 프린터의 출력 처리
반응형
'Data Structure' 카테고리의 다른 글
HashTable VS HashMap (0) | 2022.05.22 |
---|---|
HashMap (0) | 2022.05.21 |
해쉬 테이블 ( HashTable ) (1) | 2022.04.16 |
트리 (Tree) (0) | 2022.04.07 |
힙(Heap) (0) | 2022.03.26 |