
rear에서 삽입: rear의 위치를 증가시킨 후 원소를 삽입
front에서 삭제

- FCFS(First-Come FIrst-Served) 스케줄링(FIFO 스케줄링) 기법: 작업(프로그램)이 준비 큐에 도착한 순서대로 CPU를 할당받고 작업이 완료될 때까지 CPU를 사용하는 기법
- RR(Round Robin) 스케줄링: 대화형 시스템에 적합, 일정 시간(time slice)만 CPU를 사용하는 스케줄링 방식
삽입 연산이 발생하면 rear 변수만 오른쪽으로 이동하고, 삭제 연산이 발생하면 front 변수만 오른쪽으로 이동함
void Add_q(element item) {
if (rear == QUEUE_SIZE-1) { //큐가 가득찬 경우
printf("Queue is full");
return; }
queue[++rear] = item;
return;
}
// queue(++rear) → rear에 1 증가시킨 후, 해당 위치에 새로운 원소 삽입
element Delete_q() {
if (front ==rear) { // 큐가 비어있는 경우
printf("Queue is empty")
return; }
return(queue[++(front)]);
// front 값을 1증가 시키고, 해당 위치의 원소 반환
}

rear가 QueueSize -1 과 같으면 full 만원이다.
그러나 만원 상태에서 다음과 같은 케이스는 어떻게 할 것인가?
: 배열로 구현한 큐의 경우 큐의 원소의 개수가 n-1이 아니더라도 큐가 full이 될 수 있음


mod 연산자를 사용
- rear = (rear + 1) % MAX_SIZE: 새로운 원소를 추가할 때 rear을 다음 위치로 이동. 만약 rear이 MAX_SIZE - 1에 도달하면, 다음 위치는 0
- front = (front + 1) % MAX_SIZE: 원소를 제거할 때 front를 다음 위치로 이동. 만약 front가 MAX_SIZE - 1에 도달하면, 다음 위치는 0