본문 바로가기
Java

[JAVA] 자바 - 큐(Queue) 구현하기

by Seong-Jun 2022. 1. 5.
728x90
반응형
SMALL

Queue의 특징

  • 맨 앞(front)에서 자료를 꺼내거나 삭제하고 맨 뒤(rear)에서 자료를 추가합니다.
  • First In First Out (선입선출) 구조입니다.
  • 일상생활에서 일렬로 줄 서 있는 모양을 생각하면 이해하기 쉽습니다.
  • 순차적으로 입력된 자료를 순서대로 처리하는데 많이 사용되는 자료구조입니다.
  • 콜센터에 들어온 문의 전화, 메시지 큐 등에 활용됩니다.
  • jdk 클래스: ArrayList

연결 리스트를 활용하여 Queue 구현하기

MyLinkedQueue.java

import ch38.MyLinkedList;
import ch38.MyListNode;

interface Queue {
	public void enQueue(String data);
	public String deQueue();
	public void printQueue();
}

public class MyLinkedQueue extends MyLinkedList implements Queue {

	MyListNode front;
	MyListNode rear;
	
	@Override
	public void enQueue(String data) {
		MyListNode newNode;
		if(isEmpty()) {
			// 비어있는 큐에 맨 처읆으로 들어가는 경우
			newNode = addElement(data);
			front = newNode;
			rear = newNode;
		}
		else {
			// 맨 뒤로 들어가는 경우
			newNode = addElement(data);
			rear = newNode;
		}
		
		System.out.println(newNode.getData() + " added");
	}

	@Override
	public String deQueue() {
		if(isEmpty()) {
			return null;
		}
		String data = front.getData();
		front = front.next;
		
		if(front == null) { // 마지막 항목이라는 의미
			rear = null;
		}
		return data;
	}

	@Override
	public void printQueue() {
		printAll();
	}

}

MyListQueueTest.java

public class MyListQueueTest {

	public static void main(String[] args) {
		MyLinkedQueue listQueue = new MyLinkedQueue();
		listQueue.enQueue("A");
		listQueue.enQueue("B");
		listQueue.enQueue("C");
		
		listQueue.printAll();
		
		System.out.println(listQueue.deQueue());
		System.out.println(listQueue.deQueue());
	}

}

출력 결과

Aadded
Badded
Cadded
A->B->C
A
B
728x90
반응형
LIST

댓글