struct circqueue
{ int front,rear; int capacity; int *array; };
struct circqueue *q(int size)
{ struct circqueue *q=malloc(sizeof(struct circqueue));
if(!q)
return NULL;
q->capacity=size;
q->front=-1; q->rear=-1;
q->array=malloc(q->capacity*sizeof(int));
if(!q->array)return NULL;
return q; }
void enqueue(struct circqueue *q,int x)
{ if(isfullqueue(q)) printf("queue overflow\n");
else{ q->rear=(q->rear+1)%q->capacity;
q->array[q->rear]=x;
if(q->front==-1) { q->front=q->rear; }
}
}
capacity를 4로 하고 처음 넣는걸로 가정 즉 front와 rear가 -1이라고 하면요
enqueue에서 빨간글씨 표시한 코드로 인해서 rear=4가 되는데
array[4]=x 하면 capacity가 4인데 용량이 넘어가잖아요.
array[3]=x 하면 이해가 되거든요 뒤에서 채우니까.
이거좀 알려주세요
q->rear=(q->rear+1)%q->capacity;
제가 이 부분을 저만의 기적의 계산법으로 해서 rear가 4가 나오는건가요?
쉽네요 제 밑에분이 알려줄거에요
시바새캬 설렜잖아
근데 %4가 4가 나올수있나
ㅇㅅㅇ//거에요->거예요
잉 코드 돌려서 printf 로 확인해봤는데 0 나오네... 그치 첨이니까 front랑 rear랑 array[0]에서 같이 시작해야 맞지. 근데 왜 0이지 시발
q->rear=(q->rear+1)%q->capacity.
0%4=4 아님니까?
0%4=0인가? %이거 나머지 아님?
0아니냐..?
4로나눈 나머지가 4가되면 노벨상감아니냐?
2 % 7 은 뭐야 그럼 2야? ㅇㅇ 2지 시발.......... 기적의 계산법때문에 30분 날렸네. 고맙다