링 버퍼를 사용하지 않고 순수 배열을 이용해 구현한 int queue 이다. 큐의 기본특성인 FIFO 로직을 수행한다.
package datastructure.queue.intarrayqueue;
public class IntArrayQueue {
private int max;
private int pointer;
private int[] queue;
public IntArrayQueue(int capacity) {
max = capacity;
pointer = 0;
queue = new int[max];
}
public void enqueue(int value) {
if (pointer >= max) {
throw new IllegalStateException("큐가 가득 찼습니다.");
}
queue[pointer++] = value;
}
public int dequeue() {
if (pointer <= 0) {
throw new IllegalStateException("큐가 비어 있습니다.");
}
int value = queue[0];
reconstruct();
pointer--;
return value;
}
public int peek() {
if (pointer <= 0) {
throw new IllegalStateException("큐가 비어 있습니다.");
}
return queue[0];
}
public boolean isEmpty() {
return pointer == 0;
}
public boolean isFull() {
return pointer == max;
}
public int size() {
return pointer;
}
public void clear() {
pointer = 0;
}
private void reconstruct() {
for (int i = 1; i < pointer; i++) {
queue[i - 1] = queue[i];
}
queue[pointer - 1] = 0;
}
}
테스트 코드
package datastructure.queue.intarrayqueue;
public class IntArrayQueueMain {
public static void main(String[] args) {
IntArrayQueue queue = new IntArrayQueue(5); // 용량(capacity)이 5인 큐 생성
// 큐에 값 추가
queue.enqueue(1);
queue.enqueue(2);
queue.enqueue(3);
queue.enqueue(4);
queue.enqueue(5);
System.out.println("큐의 크기: " + queue.size()); // 큐의 크기 출력: 5
System.out.println("큐가 가득 찼는가? " + queue.isFull()); // 큐가 가득 찼는지 여부 출력: true
System.out.println("큐의 맨 앞 요소: " + queue.peek()); // 큐의 맨 앞 요소 확인: 1
int removedValue = queue.dequeue(); // 큐에서 값 제거
System.out.println("제거한 값: " + removedValue); // 제거된 값 출력: 1
System.out.println("큐의 크기: " + queue.size()); // 큐의 크기 출력: 4
// 큐 비우기
queue.clear();
System.out.println("큐의 크기: " + queue.size()); // 큐의 크기 출력: 0
System.out.println("큐가 비었는가? " + queue.isEmpty()); // 큐가 비어 있는지 여부 출력: true
}
}
실행 현황
반응형
'CS > 자료구조' 카테고리의 다른 글
배열 - 정의, 추상 자료형, 연산, 희소 행렬 (0) | 2023.11.18 |
---|---|
자료구조, 추상화의 개념, 자료구조와 알고리즘, 알고리즘의 개념과 조건 및 성능 (0) | 2023.11.18 |
pointer 방식 LinkedList 자바 구현 코드 (0) | 2023.06.18 |
ring 방식 int queue 자바 구현 코드 (0) | 2023.06.17 |
int stack 자바 구현 코드 (0) | 2023.06.17 |