数据结构——舞者匹配

#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;
 } 
发布了40 篇原创文章 · 获赞 2 · 访问量 870

猜你喜欢

转载自blog.csdn.net/qq_43851311/article/details/102917511