C的实现代码
#include<stdio.h>
#include<string.h>
#define QMAXSIZE 100
typedef struct{
char name[20];
int sex;
}QNode;
typedef struct{
int front,rear;
int count;
QNode dancers[QMAXSIZE] ;
}CqQueue;
void InitQueue(CqQueue *fq){
fq->front = fq->rear = NULL;
fq->count = 0 ;
}
int QueueEmpty(CqQueue *fq){
if(fq->front==fq->rear)
return 1;
return 0;
}
void EnQueue(CqQueue *fq,QNode p){
fq->count++;
fq->dancers[fq->rear] = p;
fq->rear = (fq->rear+1)%QMAXSIZE;
}
QNode DeQueue(CqQueue *fq){
QNode p;
while(!QueueEmpty(fq)){
p = fq->dancers[fq->front];
fq->count--;
fq->front = (++fq->front)%QMAXSIZE;
return p;
}
}
QNode QueueFront(CqQueue *fq){
return fq->dancers[fq->front];
}
int main(){
QNode dancers[QMAXSIZE];
int i,num;
printf("请输入男舞和女舞的总人数:\n");
scanf("%d",&num);
printf("请输入姓名和性别(0代表男性,1代表女性):\n");
for(int i=0;i<num;i++){
scanf("%s",&dancers[i].name);
scanf("%d",&dancers[i].sex);
if(dancers[i].sex!=0&&dancers[i].sex!=1)
printf("第%d个人信息错误,请重新输入 。\n",i--);
}
QNode p,m,w;
CqQueue men,women;
InitQueue(&men);InitQueue(&women);
for(int i=0;i<num;i++){
p = dancers[i];
if(p.sex==0){
EnQueue(&men,p);
}
else EnQueue(&women,p);
}
while(!QueueEmpty(&men)&&!QueueEmpty(&women)){
m = DeQueue(&men);
printf("出队男:%s",m.name);
w = DeQueue(&women);
printf("\t出队女:%s",w.name);
printf("\t配对成功。\n");
}
if(!QueueEmpty(&men)){
m = QueueFront(&men);
printf("男舞队列还有%d个人等待,第一个等待的队员是:%s\n",men.count,m.name);
}
else if(!QueueEmpty(&women)){
w = QueueFront(&women);
printf("女舞队列还有%d个人等待,第一个等待的队员是:%s\n",women.count,w.name);
}
else
printf("男女舞队都无剩余队员。\n");
return 0;
}
运行结果