본문 바로가기

Algorithm/Base

Queue 큐 ( JAVA )

반응형

 

Queue 큐

 


Queue 란 ?

먼저 집어 넣은 데이터가 먼저 나오는 FIFO(First In First Out) 구조로 저장하는 형식을 말한다.

스택과는 반대되는 개념이다.

 

큐의 탐색에는 O(N) 만큼의 시간이 걸리고 삽입/삭제에는 O(1) 만큼의 시간이 소요된다.

 

 

구현

Queue를 직접 구현해본다.

배열과 리스트를 이용할 수 있는데 리스트로 큐의 삽입과 삭제를 구현해보겠다.

 

먼저 큐를 구현하기 위해 Node 클래스를 생성한다.

static class Node{
		int val;
		Node next;
		public Node(int val) {
			this.val = val;
			next = null;
		}
	}
	
	static Node head;
	

 

다음으로는 Node 클래스를 활용하여 삽입을 구현해보자

삽입을 하는 메소드 이름은 Enqueue로 명명하겠다.

  • 삽입하려는 값을 매개 변수로 받는다.
  • 새로운 Node 객체를 생성하고 매개 변수로 들어온 값으로 초기화를 진행한다.
  • 큐가 비어있다면 head에 그렇지 않다면 맨 마지막 위치를 탐색하여 그 곳에 값을 추가해준다.
static void Enqueue(int val) {
		Node newNode = new Node(val);
		
		if(head == null) {
			head = newNode;
		}else {
			Node tail = head;
			while(tail.next !=null) tail = tail.next;
			tail.next = newNode;
		}
	}

 

마지막으로 큐의 삭제를 구현해보자.

삭제 메소드 이름은 Dequeue로 명명하겠다.

  • 큐가 비어있다면 -1을 반환해준다. (예외처리)
  • 가장 앞의 Node를 임시 저장해두고 head를 현재 head의 next로 변경해준다.
  • 임시 저장해둔 값을 반환해준다.
static int Dequeue() {
		if(head == null) return -1;
		Node target = head;
		head = head.next;
		return target.val;
	}

 

 

cpdm

 

choppadontbiteme.tistory.com

 

반응형

'Algorithm > Base' 카테고리의 다른 글

Selection Sort 삽입 정렬 (C++)  (0) 2022.08.30
Bubble Sort 버블 정렬 (C++)  (0) 2022.08.29
Selection Sort 선택 정렬 (JAVA)  (0) 2022.05.27
Stack 스택 (JAVA)  (0) 2021.04.07
Linked List 링크드 리스트 ( JAVA )  (0) 2021.03.23