
| 연산 | 기능 |
|---|---|
| enQueue(item) | 큐의 뒤쪽(rear 다음)에 원소를 삽입하는 연산 |
| deQueue() | 큐의 앞쪽(front)에서 원소를 삭제하고 반환하는 연산 |
| createQueue() | 공백 상태의 큐를 생성하는 연산 |
| isEmpty() | 큐가 공백 상태인지 확인하는 연산 |
| isFull() | 큐가 포화 상태인지 확인하는 연산 |
| Qpeek() | 큐의 앞쪽(front)에서 원소를 삭제하지 않고 반환하는 연산 |







enQueue(item) {
if(isFull())
print("Queue_Full")
else {
rear <- rear + 1;
Q[rear] <- item;
}
}
deQueue() {
if(isEmpty()) // front == rear
print("Queue_Empty");
else {
front <- front + 1;
return Q[front];
}
}
isEmpty() {
if(front == rear)
return true;
else
return false;
}
isFull() {
if(rear == n-1)
return true;
else
return false;
}
Qpeek() {
if(isEmpty())
print("Queue_Empty");
else
return Q[fromt+1]
}
잘못된 포화상태 인식
선형 큐를 이용한 원소의 삽입/삭제 시, 배열의 앞부분에 활용할 수 있는 공간이 있지만 rear = n-1 즉 포화상태로 인식하여 더 이상의 삽입을 수행하지 않게됨.

tradeoff 관계 : 시간과 공간의 반비례
enQueue, deQueue : O(1)
해결 방법 1

해결 방법 2

버퍼 : 데이터를 한 곳에서 다른 한 곳으로 전송하는 동안 일시적으로 그 데이터를 보관하는 메모리의 영역
버퍼링 : 버퍼를 활용하는 방식 또는 버퍼를 채우는 동작
버퍼 자료구조
| 구분 | Stack | Queue |
|---|---|---|
| 추상 자료구조 | O | O |
| 선형 | O | O |
| 삽입/삭제 | 한쪽 끝에서 삽입/삭제 동시 | 한쪽 끝에서만 삽입 / 한쪽 끝에서만 삭제 |
| 연산 | push(top++), pop(top--) | enqueue(rear++), dequeue(front++ 또는 rear--) |
| 연산 시간복잡도 | push(O(1)), pop(O(1)) | enqueue(O(1)), dequeue(O(1) 또는 O(N) (rear--일때)) |
| Java에 구현 여부 | stack : 클래스 | Queue : 인터페이스, 구현체 : LinkedList(클래스) |