큐 클래스
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);
    }
}

+ Recent posts