본문 바로가기
Tech/Java

Java 자료구조 - Queue

by Dog발자. 2020. 5. 25.
반응형

- Queue(큐)

Queue 자료구조는 위 그림 처럼 Front(앞쪽), Rear(뒷쪽) 이 모두 뚫려있는 모양이고 Rear로 값이 들어오고 Front로 나가는것을 기본적인 Queue의 자료구조이다. 그렇기 때문에 가장 먼저 들어온 값이 가장 먼저 나가는 FIFO (First In First Out) 구조이다.

 

다음 코드는 Queue 구조를 배열을 이용하여 구현한 것이다.

public class TestQueue {
	protected Object[] data;
	protected int dataLength = -1;
	protected int point = -1;
	protected int index = -1;
	protected int size;
	
	public TestQueue (int size) {
		this.size = size;
		data = new Object[size];
	}
	
	public void push (Object value) {
		if (fullCheck()) {
			++dataLength;
			data[++index] = value;			
		} else {
			System.out.println("full queue");
		}
	}
	
	public Object peek() {
		--dataLength;
		Object returnData = data[++point];		

		data[point] = null;
		
		if (index == (size - 1)) {
			index = -1;
		}
		
		if (point == (size - 1)) {
			point = -1;
		}
		
		if (nullCheck()) {
			point = -1;
			index = -1;
		}
		
		return returnData;
	}
	
	public boolean fullCheck () {
		return dataLength == size - 1 ? false : true;
	}
	
	public boolean nullCheck () {
		return index == point ? true : false;
	}
	
	public static void main(String[] args) {
		TestQueue tq = new TestQueue(3);
		tq.push(11);
		tq.push(22);
		tq.push(33);
		System.out.println(tq.peek());
		System.out.println(tq.peek());
		tq.push(44);
		System.out.println(tq.peek());
		tq.push(55);
		tq.push(66);
		System.out.println(tq.peek());
		System.out.println(tq.peek());
		tq.push(77);
		tq.push(88);
		tq.push(99);
		tq.push(100);
		System.out.println(tq.peek());
		System.out.println(tq.peek());
		System.out.println(tq.peek());
		System.out.println(tq.peek());
		
		ArrayList<Character> aa = new ArrayList<Character>();
		aa.add('c');
	}

}
반응형

댓글