Queue

Jemny·2023년 10월 17일
0

자료구조

목록 보기
2/6

큐 자료구조의 기본구조

큐는 데이터를 입력하면 차례대로 입력되는것은 스택과 동일하다.
하지만 스택과 다른점은 큐는 먼저 입력된 정보가 먼저 출력된다는것이다.
ex) 1 2 3 4 5 구조의 큐가 존재한다고 할때 왼쪽부터 차례대로 오른쪽으로 데이터를 입력하고 왼쪽부터 출력할 수 있다.

  • 다음 데이터 입력시 5의 오른쪽에 입력된다. -> 6 입력 시 큐 구조 = 1 2 3 4 5 6
  • 데이터를 꺼낼 때는 왼쪽부터 순서대로 (1 2 3 4 5 6 순서)꺼내야한다 (중간과 마지막에 있는 2 3 4 5 6을 꺼내려면 더 왼쪽에 있는 데이터를 먼저 꺼내야한다.)

자바에서 큐를 선언하는 방법

import java.util.LinkedList; //import
import java.util.Queue; //import
Queue<Integer> queue = new LinkedList<>(); //int형 queue 선언, linkedlist 이용
Queue<String> queue = new LinkedList<>(); //String형 queue 선언, linkedlist 이용
  • 자바에서 큐는 LinkedList를 사용하기 때문에 Queue와 LinkedList를 둘 다 임포트 해줘야한다.
Queue<> queue = new Queue<>();
  • 큐가 인터페이스로 이루어져있기 때문에 이런식으로 선언하게 되면 큐와 관련된 메소드 들을 모두 오버라이드 해줘야하기 때문에
    LinkedList<>()로 선언해준다.

큐에 새로운 값을 추가할 때

Queue<Integer> stack = new LinkedList<>(); //int형 queue 선언
queue.add(1);     // queue에 값 1 추가
queue.add(2);     // queue에 값 2 추가
queue.offer(3);   // queue에 값 3 추가
  • 자바에서 queue에 값을 추가하고 싶다면 add(value) 또는 offer(value)라는 메서드를 활용한다.
  • add(value) 메소드의 경우 만약 삽입에 성공하면 true를 반환하고, 큐에 여유 공간이 없어 삽입에 실패하면 IllegalStateException을 발생시킨다.
  • queue에 값을 계속해서 추가해나간다면 아래 그림과 같은 형태로 데이터가 쌓이게 됩니다.

큐에서 값을 제거할 때

queue.poll();       // queue에 첫번째 값을 반환하고 제거 비어있다면 null
queue.remove();     // queue에 첫번째 값 제거
queue.clear();      // queue 초기화
  • queue에서 값을 제거하고싶다면 poll()이나 remove라는 메서드를 사용한다.
  • poll()함수는 큐가 비어있으면 null을 반환한다.
  • queue의 모든 요소를 제거하려면 clear()메서드를 사용한다.
  • pop을 하면 가장 앞쪽에 있는 원소의 값이 아래 그림과 같이 제거된다.

큐에서 가장 먼저 들어온 값을 출력할 때

queue.peek();       // queue의 첫번째 값 반환(공백큐 일때는 null 반환)
queue.element();       // queue의 첫번째 값 반환(공백큐 일때는 Exception("NoSuchElementException") 발생)
  • Queue에서 첫번째로 저장된 값을 반환하고 싶다면 peek()나 element() 메서드를 사용한다.

그밖에 스택에 관한 메서드

queue.size();      // queue 크기 출력
queue.isempty();     // stack이 비어있는제 check (비어있다면 true)
queue.contains(1) // queue 1이 있는지 check (있다면 true)
profile
백엔드 개발자 지망생

0개의 댓글