|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 划句顾 于 2021-10-17 12:48 编辑
舞伴问题
1)设置两个队列分别存放男士和女士入队者
2)假设男士和女士的记录存放在一个数组中作为输入,然后依次扫描该数组的各元素,并根据性别来决定是进入男队还是女队。
3)当这两个队列构造完成之后,依次将两队当前的队头元素出队来配成舞伴,直至某队列变空为止。
4)此时,若某队仍有等待配对者,则输出此队列中排在队头的等待者的姓名,此人将是下一轮舞曲开始时第一个可获得舞伴的人。
代码如下:
- /*
- *author :LaoGu
- *time :2021/10/16
- *purpose:循环队列的应用:舞者配对
- */
- #include<iostream>
- using namespace std;
复制代码
- #define OK 1
- #define ERROR 0
- #define OVERFLOW -2
- #define MAXSIZE 100
- #define N 8 //定义舞者数量
复制代码
- typedef struct{
- char name[50]; //姓名
- char sex; //性别,‘F’表示女性,‘M’表示男性
- }Person;
- typedef struct{
- Person *base;
- int front; //头指针
- int rear; //尾指针
- }SqQueue;
- SqQueue Mdancers,Fdancers; //定义两个队列
复制代码
- //初始化函数
- int InitSq(SqQueue &Q){
- Q.base = new Person [MAXSIZE];
- if(!Q.base) exit(OVERFLOW);
- Q.front = Q.rear = 0;
- return OK;
- }
复制代码
- //判断队列是否为空
- bool QueueEmpty(SqQueue Q){
- if (Q.front == Q.rear)
- return true;
- else
- return false;
- }
复制代码
- //入队
- int EnQueue(SqQueue &Q,Person e)
- {
- if((Q.rear+1)%MAXSIZE == Q.front) return ERROR;
- Q.base[Q.rear] = e;
- Q.rear=(Q.rear+1)%MAXSIZE;
- return OK;
- }
复制代码
- //出队
- int DeQueue(SqQueue &Q,Person &e)
- {
- if(Q.front==Q.rear) return ERROR; //判断队列是否为空
- e = Q.base[Q.front];
- Q.front = (Q.front+1)%MAXSIZE;
- return OK;
- }
复制代码
- //取队头元素
- Person GetHead(SqQueue &Q)
- {
- if(Q.front!=Q.rear) return Q.base[Q.front];
- else
- exit(ERROR);
- }
复制代码
- //主函数
- int main()
- {
- Person d[N]={
- {"蔡蔡",'F'},
- {"黄黄",'F'},
- {"龙龙",'F'},
- {"易烊千玺",'M'},
- {"白敬亭",'M'},
- {"高杨",'M'},
- {"刘德华",'M'},
- {"彭于晏",'M'}
- },*z=d;
- DancerPartner(z,N);
- return 0;
- }
复制代码
运行结果:
或者头文件方法
注:这个可以自己输入舞者的数量和舞者的信息
- /*
- *author :LaoGu
- *time :2021/10/17
- *purpose:循环队列的应用:舞者配对
- */
- #include<iostream>
- #include "link.h" //一些队列的定义
- #include "peidui.h" //舞者配对
- using namespace std;
- //输入舞者信息
- int Print(Person d[],int n)
- {
- int j;
- cout<<"请输入舞者信息\n";
- cout<<"姓名 "<<"性别 "<<endl;
- for(j=0;j<n;j++)
- {
- cin>>d[j].name>>d[j].sex;
- }
- cout<<endl;
- return 0;
- }
- //主函数
- int main()
- {
- int n;
- cout<<"请输入参加舞会的舞者的数量:";
- cin>>n;
- cout<<endl;
- Person d[N],*z=d;
- Print(z,n);
- DancerPartner(z,n);
- return 0;
- }
复制代码
两个自己定义的头文件
一、link文件
二、peidui文件
运行结果:
|
|