Queue
먼저 집어넣은 데이터를 먼저 꺼낸다 FIFO(First In First Out)
양쪽으로 뚫린 파이프에 한쪽은 넣고 반대쪽은 빠져나오는 구조이다
Queue의 메서드
- add() : 맨 끝에 데이터를 하나 추가
- remove() : 맨 앞에서 데이터를 하나 꺼낸다
- peek() : 맨 앞에 있는 데이터를 본다
- isEmpty() : Queue가 비었는지 확인
- poll() : Queue에서 객체를 꺼내서 반환. 비어있으면 null 반환
- offer() : Queue에 객체를 저장. 성공하면 true 실패하면 false 반환
Queue를 코드로 구현
import java.util.NoSuchElementException; class Queue<T> { //queue 클래스 생성 + 데이터 타입 명시 class Node<T> { private T data; private Node<T> next; public Node (T data) { this.data = data; } } private Node<T> first; private Node<T> last; //처음과 끝을 선언 public void add (T item) { Node<T> t = new Node<T>(item); if(last != null) { last.next = t; //마지막 글자 } last = t; if (first == null) { first = last; } } public T remove() { if (first == null) { throw new NoSuchElementException(); } T data = first.data; first = first.next; if(first == null) { last = null; //first 변경 시 last도 변경 } return data; } public T peek() { if (first == null) { throw new NuSuchElementException(); } return first.data; } public boolean isEmpty() { return first == null; } } public class Test { public static void main (String[] args) { Queue<Integer> q = new Quque<Integer>(); q.add(1); q.add(2); q.add(3); q.add(4); System.oout.println(q.remove()); System.oout.println(q.remove()); System.oout.println(q.peek()); System.oout.println(q.remove()); System.oout.println(q.isEmpty()); System.oout.println(q.remove()); System.oout.println(q.isEmpty()); } } |
'CS지식 > 자료구조' 카테고리의 다른 글
TIL 정리_57 (0) | 2022.04.13 |
---|---|
TIL 정리_56 (0) | 2022.04.12 |
TIL 정리_50(Stack) (0) | 2022.04.06 |
TIL 정리_49(StringBuilder) (0) | 2022.04.05 |
TIL 정리_48(Hash Table, ArrayList) (0) | 2022.04.04 |