If today was hard, tomorrow will be easy.

간결하고 의미있는 코딩을 위하여.

GitHub - Inchijeong 바로가기→

DataStructure

[Queue] Queue 개념, 구현

꼬스차 2021. 1. 14. 19:20
728x90
반응형

큐(Queue)에 대해 알아볼겠습니다.

큐(Queue)란?

  • 먼저 저장한 데이터를 가장 먼저 꺼낼 수 있는 자료구조
  • FIFO(First In First Out)

Queue의 주요 메소드

  • add - 새로운 데이터를 맨 끝에 넣음
  • remove - 맨 앞 데이터를 가져오면서 삭제
  • peek - 맨 앞 데이터를 가져옴
  • isEmpty - 큐에 데이터가 있는지 확인

Queue 구현 코드 in Java

import java.util.NoSuchElementException;

class Queue<T> {

    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;
        }
        return data;
    }

    public T peek() {
        if(first == null) {
            throw new NoSuchElementException();
        }
        return first.data;
    }

    public boolean isEmpty() {
        return first == null;
    }
}

public class Test {
    public static void main(String[] args) {
        Queue<Integer> q = new Queue<Integer>();
        q.add(1);
        q.add(2);
        q.add(3);
        q.add(4);
        System.out.println(q.remove());
        System.out.println(q.remove());
        System.out.println(q.peek());
        System.out.println(q.remove());
        System.out.println(q.isEmpty());
        System.out.println(q.remove());
        System.out.println(q.isEmpty());
    }
}

링크

아래 강의를 참고하여 작성하였습니다.

728x90
반응형

'DataStructure' 카테고리의 다른 글

[Tree] Binary Tree 순회 방법  (0) 2021.01.14
[Tree] Tree의 개념, 종류  (0) 2021.01.14
[Stack] Stack 개념, 구현  (0) 2021.01.14
[LinkedList] 단방향, 양방향 연결 리스트  (0) 2021.01.14
[LinkedList] Linked List 개념  (0) 2021.01.14