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; }

 

int queuesize(struct circqueue *q)

{ return(q->capacity-q->rear+q->front+1)%q->capacity; }


void enqueue(struct circqueue *q,int x)

 { if(isfullqueue(q)) printf("queue overflown");

else{ q->rear=(q->rear+1)%q->capacity;

q->array[q->rear]=x;

if(q->front==-1) { q->front=q->rear; }

   }

}

저 큐사이즈 뭐하는 함수임?

capacity를 4로 두고 비어있다고 가정 즉 rear랑 front가 -1임

4 - (-1) + (-1) + 1 % 4 = 1 이잖음

큐사이즈 1이 뭘 의미하는겨 비었다고 0을 말해주는것도 아니고

꽉 채웠다고 치면 front=0이고, rear=3이 되는데

4 - (3) + 0 + 1 % 4 = 2 잖음. 꽉채웠다고 4를 말해주는것도 아니고 1이랑 2가 도대체 뭐임.

그리고 내 책에는

q->capacity-q->rear+q->front+1)%q->capacity 가 아니라

q->capacity-q->front+q->rear+1)%q->capacity 로 돼있음

근데 책으로 해도 의문인게

비었다고 쳤을때 똑같이 1 반환하고

꽉찼다고 쳤을때는 0을 반환함.

그래서 뭔 지 몰겠음