#include <stdio.h>

#include <stdlib.h>

#include <string.h>


#define MAX_SIZE 50

#define MAX_QUEUE_SIZE 6



typedef struct {

char** value;

int front;

int rear;

} Queue;


void init_queue(Queue* q) {

q->value = (char**)malloc(sizeof(char*) * MAX_QUEUE_SIZE);

q->front = 0;

q->rear = 0;

}


int is_full(Queue* q) {

if (((q->rear +1) % MAX_QUEUE_SIZE) == q->front)

return 1;


else

return 0;

}


int is_empty(Queue* q) {

if (q->front == q->rear)

return 1;


else

return 0;

}

void addq(Queue* q, char* value) {

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

q->value[q->rear] = value;

printf("addq: %s", value);

return;

}


char* deleteq(Queue* q) {

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

return q->value[q->front];

}



void arrive(Queue q) {

int input;

char name[MAX_SIZE];


printf("\n");

printf("1. 대기자 등록\n");

printf("2. 취소\n");

scanf("%d", &input);


if (input == 1) {

if (is_full(&q) == 1) {

printf("Service is not available\n");

}


else {

printf("이름 입력: ");

scanf("%s", name);

addq(&q, name);

}

}


else if (input == 2) {

return;

}


else {

printf("입력오류\n");

return;

}

return;

}


void exit_hos(Queue q) {


char patient[MAX_SIZE];


if (is_empty(&q) == 1)

{

printf("There is no patient waiting\n");

}


else if (is_empty(&q) == 0) {

strcpy(patient, deleteq(&q));

printf("환자: %s", patient);

}

return;

}


int main() {


int input;

Queue q;

init_queue(&q);


while (1)

{

printf("\n입력대기\n");

printf("1. 병원 도착\n");

printf("2. 병원 퇴장\n");

printf("3. 서비스 종료\n");

scanf("%d", &input);

if (input == 1)

arrive(q);


else if (input == 2)

exit_hos(q);


else if (input == 3) {

printf("종료\n");

return 0;

}


else {

printf("입력 오류\n");

}

}

free(q.value);


return 0;

}



큐 이용해서 병원환자 관리 프로그램 만드는건데요

어떻게해도 addq로 환자 병원도착하고나서 퇴장하면 

무조건 큐가 비어있는걸로 인식하고 There is no patient waiting이 출력됩니다


몇십분째 보고있는데 어디서 문제인건지 감도안잡히네요 

고수님들 조언좀 보탁드립니다