public class Queue<T> {
private int maxSize;
private T[] array;
private int front;
private int back;
private int currentSize;
public Queue(int maxSize){
this.maxSize = maxSize;
array = (T[]) new Object[maxSize];
front = 0;
back = -1;
currentSize = 0;
}
public int getMaxSize(){
return maxSize;
}
public int getCurrentSize(){
return currentSize;
}
public T top(){
return array[front];
}
public boolean isEmpty(){
return currentSize == 0;
}
public boolean isFull(){
return currentSize == maxSize;
}
}
back = (back + 1) % maxSize
(back+1) 값이 maxSize와 동일하다면 back 변수 값은 0을 의미한다. (그림 9)
enqueue에 back 변수가 +1 된다.
enqueue에 currentSize +1 된다.
public void enqueue(T val){
if(isFull())
return;
back = (back + 1) % maxSize;
array[back] = val;
currentSize++;
printQueue();
}
front = (front + 1) % maxSize
(front+1) 값이 maxSize와 동일하다면 front 변수 값은 0을 의미한다.
dequeue에 front 변수가 +1 된다.
dequeue에 currentSize -1 된다.
public T dequeue(){
if(isEmpty())
return null;
T temp = array[front];
front = (front + 1) % maxSize;
currentSize--;
printQueue();
return temp;
}
enqueue, dequeue 과정에서 Queue의 구조와 객체 인스턴스에 할당된 값들이 어떻게 변화되는지 이해하기 위한 목적으로 정리하였습니다. 잘못된 내용이 있는 경우 언제든 조언을 해주시면 감사하겠습니다.
[Stack] 스택 정렬 (0) | 2020.04.05 |
---|---|
[Queue] 스택을 이용한 큐 구현 (0) | 2020.04.05 |
[Queue] reverse k (0) | 2020.04.04 |
[Stack] 두 개의 스택 (0) | 2020.04.03 |
[Stack] 배열 구현 (0) | 2020.03.30 |
댓글 영역