队列

 #include<stdio.h>//问题(用循环队列实现)// 
#define queuesize 100 
typedef struct //定义结构体-人员信息// 

char name[20]; 
char sex; 
} datatype; 
typedef struct //定义结构体-循环队列// 

int front; 
int rear; 
int count; 
datatype dancers[queuesize]; 
} cirqueue; 
void initqueue(cirqueue *q)//建立空队列// 

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

int queueempty(cirqueue *q)//判断队列是否为空,为空返回1,否则返回0// 

return q->count==NULL; 

void enqueue(cirqueue *q,datatype p)//进队函数,使p进入队列// 

q->count++; 
q->dancers[q->rear]=p; 
q->rear=(q->rear+1)%queuesize; 

datatype dequeue(cirqueue *q)//出队函数,用p返回出队值// 

datatype p; 
while(!queueempty(q)) 

p=q->dancers[q->front]; 
q->count--; 
q->front=(q->front++)%queuesize; 
return p; 


datatype queuefront(cirqueue *q)//访问队头元素// 

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

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void dancepartners(datatype dancers[],int num)//// 

int i; 
datatype p; 
cirqueue maledancer,femaledancer;//定义两个循环队列结构体// 
initqueue(&maledancer);//调用initqueue()函数置空队列maledancer// 
initqueue(&femaledancer);//调用initqueue()函数置空队列femaledancer// 
for(i=0;i<num;i++) 

p=dancers[i];//结构体整体赋值// 
if(p.sex=='f')//乙的进队列femaledancer// 

enqueue(&femaledancer,p); 
printf("%s进乙队\n",p.name); 

else//甲的进队列maledancer// 

enqueue(&maledancer,p); 
printf("%s进甲队\n",p.name); 


printf("配对情况如下:\n"); 
while (!queueempty(&femaledancer)&&!queueempty(&maledancer))//当两个队列都不为空时,出队配对// 

p=dequeue(&maledancer); 
printf("甲:%s",p.name); 
p=dequeue(&femaledancer); 
printf("和乙:%s配对成功\n",p.name); 

if(!queueempty(&femaledancer))//乙队不为空,输出乙队第一个等待人姓名// 

printf("乙队中还有%d个人在等待!\n",femaledancer.count); 
p=queuefront(&femaledancer); 
printf("乙队中第一个等待的是:%s\n",p.name); 

else if(!queueempty(&maledancer))//甲不为空,输出甲队第一个等待人姓名// 

printf("甲队中还有%d个人在等待!\n",maledancer.count); 
p=queuefront(&maledancer); 
printf("甲队中第一个等待的是:%s\n",p.name); 

else printf("^-^没有人剩余^-^!\n"); 

void main() 

datatype p,dancers[queuesize]; 
int i,num; 
printf("输入甲乙的总人数:\n"); 
scanf("%d",&num); 


dancepartners(&dancers[0],num); 
getchar(); 
}

猜你喜欢

转载自blog.csdn.net/wei_915539507/article/details/80032738
今日推荐