#include<stdio.h>

#include<stdlib.h>

#include<string.h>

#define SIZE 100


typedef char *element;

typedef struct {

element queue[SIZE];

char front, rear;

}QueueType;


void error(char *message)

{

fprintf(stderr, "%s\n", message);

exit(1);

}


void init(QueueType *q)

{

q->front = q->rear = 0;

}


int is_empty(QueueType *q)

{

return (q->front == q->rear);

}


int is_full(QueueType *q)

{

return ((q->rear + 1) % SIZE == q->front);

}


void enqueue(QueueType *q, element item)

{

if (is_full(q))

error("큐가 포화상태입니다!");

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

q->queue[q->rear] = item;

}


element dequeue(QueueType *q)

{

if (is_empty(q))

error("큐가 공백상태입니다!");

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

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

}


element peek(QueueType *q)

{

if (is_empty(q))

error("큐가 공백상태입니다!");

return q->queue[(q->front + 1) % SIZE];

}


void main()

{

QueueType male;

QueueType Female;

init(&male);

init(&Female);


char name[SIZE];

int sex;


while(1)

{

printf("이름을 입력해주세요. : ");

scanf("%s", &name);


getchar();


printf("성별을 입력해주세요. (남자 : 0, 여자 : 1) : ");

scanf("%d", &sex);


switch (sex) {

case 0:

enqueue(&male, name);

break;


case 1:

enqueue(&Female, name);

break;


default:

printf("성별이 잘못되었습니다.\n"); 

}


if ((is_empty(&male) == 0 || is_empty(&Female)) == 0)

printf("아직 기다리셔야 합니다. \n");


else if ((is_empty(&male) == 0 && is_empty(&Female)) == 0)

printf("커플이 탄생했습니다! %s와 %s입니다! \n", dequeue(&male), dequeue(&Female));


else

continue;

}

return;


}


좀 봐줘라..ㅠㅠ 큐 2개쓰는것도 했고 다 됐는데 dequeue로 삭제하고 보여줄래니까 하나만 계속 반복해서 뜨네..ㅠㅠ


이것만 해결하면 잘 수 있는데 이거 하나가 안된다 ㅠㅠ