원형큐에 "%"를 사용하는 이유에 대해서

sungyeon_park·2024년 4월 19일
0

원형큐

원형큐에서 %를 사용하는 이유
큐가 꽉 차 있는지 확인하고 위함이라고 생각한다.

int is_full(queue *q) {
	if (q->front == (q->rear + 1)%MAX_QUEUE_SIZE) {
		return 1;
	}
	else {
		return 0;
	}
}
rear+1은 8이며, 원형 큐의 최대 사이즈 또한 8이다.

(rear+1) % MAX_QSIZE는 0이 나올 것이다, front는 0이기에 원형 큐가 가득 차있다고 결론 내릴 수 있다.
8 나누기 8의 나머지는 0이기 때문이다.

같은 방식으로 enqueue에서도

q->rear = (q->rear + 1) % MAX_QUEUE_SIZE;

이렇게 %를 사용해서 MAX_QUEUE_SIZE로 나눈 나머지를 구하는 방법을 사용한다.
q->rear가 MAX_QUEUE_SIZE보다 크다면 q->rear를 MAX_QUEUE_SIZE로 나눈 나머지가 q->rear의 값을 가리키지 않게 된다.
예) 5%3 = 2
반면
q->rear가 MAX_QUEUE_SIZE보다 작다면 q->rear를 MAX_QUEUE_SIZE로 나눈 나머지가 q->rear의 값을 가리키게 된다.
예) 3%5 = 3

q->rear가 MAX_QUEUE_SIZE보다 크다면 프로그램이 이상하게 실행될 것이다.

출처: https://mengu.tistory.com/110

profile
박성연

0개의 댓글