Queue
public class Queue {
private int maxSize;
private long[] queArray;
private int front; // 큐의 첫번째 인덱스(포인터 역할)
private int rear; // 큐의 마지막 인덱스
private int nItems; // 전체 길이
public Queue(int size) {
this.maxSize = size;
this.queArray = new long[size];
front = 0;
rear = -1;
nItems = 0;
}
public void insert(long j) {
if(rear == maxSize -1) {
rear = -1; // 다시 앞에서부터 덮어씌움. Circular Queue
}
rear++;
queArray[rear] = j;
nItems++;
}
public long remove() {
long temp = queArray[front];
front++;
nItems--;
if(front == maxSize) {
front = 0;
}
return temp;
}
public long peakFront() {
return queArray[front];
}
public boolean isEmpty() {
return nItems == 0;
}
public boolean isFull() {
return nItems == maxSize;
}
public void view() {
System.out.print("[ ");
for(int i = 0 ; i < queArray.length ; i++) {
System.out.print(queArray[i] + " ");
}
System.out.print(" ]");
}
}
public class App {
public static void main(String[] args) {
Queue myQueue = new Queue(5);
myQueue.insert(100);
myQueue.insert(200);
myQueue.insert(300);
myQueue.insert(400);
myQueue.insert(500);
myQueue.insert(600); // 0번째 인덱스가 100에서 600으로 덮어씌워짐.
myQueue.view();
}
}