#include<stdio.h>
#include<string.h>
using namespace std;
#define maxsize 100
#define OK 1
#define ERROR 0
#define OVERFLOW -2
typedef int status;
struct node {
char name[20];
char xingbie;
};
typedef struct
{
node *base;
int front;
int rear;
}sqqueue;
status initqueue(sqqueue &Q)//初始化;
{
Q.base=new node[maxsize];
if(!Q.base) return OVERFLOW;
Q.front=Q.rear=0;
return OK;
}
int queuelength(sqqueue Q) //求长度
{
return (Q.rear-Q.front+maxsize)%maxsize;
}
status enqueue(sqqueue &q,node e)//入队;
{
if((q.rear+1)%maxsize==q.front)
return ERROR;
strcpy(q.base[q.rear].name,e.name);
q.base[q.rear].xingbie=e.xingbie;
q.rear=(q.rear+1)%maxsize;
return OK;
}
status dequeue(sqqueue &q,node &e)//出队;
{
if(q.front==q.rear) return ERROR;
e.xingbie=q.base[q.front].xingbie;
strcpy(e.name,q.base[q.front].name);
q.front=(q.front+1)%maxsize;
return OK;
}
node gethead(sqqueue Q)
{
if(Q.front!=Q.rear)
return Q.base[Q.front];
}
int main()
{
// sqqueue q;
// node e;
// if(initqueue(q))
// printf("Ok\n");
// else
// printf("No\n");
// for(int i=0;i<5;i++){
// scanf("%s %c",e.name,&e.xingbie);
// enqueue(q,e);
// }
// for(int i=0;i<5;i++){
// dequeue(q,e);
// printf("%s %c\n",e.name,e.xingbie);
// }创建舞者队列成功
sqqueue q,f,m;
int x;
node e;
if(initqueue(q))
printf("创建舞者队列成功\n");
else
printf("创建舞者队列失败\n");
if(initqueue(f))
printf("创建男舞者队列成功\n");
else
printf("创建男舞者队列失败\n");
if(initqueue(m))
printf("创建女舞者队列成功\n");
else
printf("创建女舞者队列失败\n");
printf("请输入舞者总人数<100:\n");
scanf("%d",&x);
printf("请按照姓名 空格 性别输入(男性用f表示,女性用m):\n");
for(int i=0;i<x;i++)
{
scanf("%s %c",e.name,&e.xingbie);
if(enqueue(q,e))
continue;
else
{
printf("error\n");
break;
}
}
printf("输入成功\n");
while(queuelength(q))
{
if(!dequeue(q,e))
{
printf("出队失败\n");
break;
}
printf("name: %s ",e.name);
if(e.xingbie=='f')
{
printf("gender:男\n");
if(!enqueue(f,e))
{
printf("男入队失败\n");
break;
}
}
else
{
printf("gender:女\n");
if(!enqueue(m,e))
{
printf("女入队失败\n");
break;
}
}
}
printf("\n");
while(queuelength(f)&&queuelength(m))
{
if(dequeue(f,e))
printf("name:%s gender:男\t匹配\t",e.name);
if(dequeue(m,e))
printf("name:%s gender:女\n",e.name);
}
printf("\n未匹配舞伴队首:\n");
if(queuelength(f)!=0)
{
e=gethead(f);
printf("name:%s gender:男\n",e.name);
}
if(queuelength(m)!=0)
{
e=gethead(m);
printf("name:%s gender:女\n",e.name);
}
return 0;
}
数据结构——舞者匹配
猜你喜欢
转载自blog.csdn.net/qq_43851311/article/details/102917511
今日推荐
周排行