CS지식/자료구조

TIL 정리_51(Queue)

ran4 2022. 4. 7. 20:31

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