public class ArrayQueue {
private int front;
private int rear;
private int maxSize;
private Object[] queueArray;
public ArrayQueue(int maxSize) {
this.maxSize = maxSize;
front = 0;
rear = -1;
queueArray = new Object[maxSize];
}
// 큐 공간이 비어 있는지
public boolean isEmpty() {
return (front == rear + 1); // 둘 다 인덱스 0번이면 비어 있음
}
// 큐 공간이 가득 차 있는지
public boolean isFull() {
return (rear == maxSize - 1); // 최후단이 배열의 총 크기와 같으면 다 차 있음
}
// 추가 -- rear와 연관 (늘어남)
public void push(Object item) {
if (isFull()) {
System.out.println("큐 공간이 가득 차 있습니다");
return; // break
}
rear++; // -1에서 0번지로
queueArray[rear] = item;
}
// 삭제 -- front와 연관
public Object pop() {
Object item = peek();
if (item == null) return null;
front++;
return item;
}
// 산출
public Object peek() {
if (isEmpty()) {
System.out.println("큐 공간이 비어 있습니다");
return null;
}
return queueArray[front];
}
}
메인 클래스
public class MainClass {
public static void main(String[] args) {
// 배열 사이즈 5로 큐 초기화
ArrayQueue queue = new ArrayQueue(5);
// 첫번째 요소 삽입
Integer in = 111;
queue.push(in);
// 두번째 요소 삽입
in = 222;
queue.push(in);
// 세번째 요소 삽입
in = 222;
queue.push(in);
// front 위치의 데이터 산출
Integer peek = (Integer) queue.peek();
System.out.println(peek);
// 1개 삭제 (front 위치에서)
queue.pop();
// front 위치의 데이터 산출
peek = (Integer) queue.peek();
System.out.println(peek);
}
}