鱼C论坛

 找回密码
 立即注册
查看: 4355|回复: 6

[学习笔记] 数据结构:循环队列的应用--舞伴问题

[复制链接]
发表于 2021-10-16 23:11:26 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 划句顾 于 2021-10-17 12:48 编辑

舞伴问题
1)设置两个队列分别存放男士和女士入队者
2)假设男士和女士的记录存放在一个数组中作为输入,然后依次扫描该数组的各元素,并根据性别来决定是进入男队还是女队。
3)当这两个队列构造完成之后,依次将两队当前的队头元素出队来配成舞伴,直至某队列变空为止。
4)此时,若某队仍有等待配对者,则输出此队列中排在队头的等待者的姓名,此人将是下一轮舞曲开始时第一个可获得舞伴的人。


代码如下:
  1. /*
  2. *author :LaoGu
  3. *time   :2021/10/16
  4. *purpose:循环队列的应用:舞者配对
  5. */
  6. #include<iostream>

  7. using namespace std;
复制代码

  1. #define OK 1
  2. #define ERROR 0
  3. #define OVERFLOW -2
  4. #define MAXSIZE 100

  5. #define N 8   //定义舞者数量
复制代码

  1. typedef struct{
  2.   char name[50]; //姓名
  3.   char sex;      //性别,‘F’表示女性,‘M’表示男性
  4. }Person;

  5. typedef struct{
  6.   Person *base;
  7.   int front;   //头指针
  8.   int rear;    //尾指针
  9. }SqQueue;

  10. SqQueue Mdancers,Fdancers; //定义两个队列
复制代码

  1. //初始化函数
  2. int InitSq(SqQueue &Q){
  3.         Q.base = new Person [MAXSIZE];
  4.         if(!Q.base) exit(OVERFLOW);
  5.         Q.front = Q.rear = 0;
  6.         return OK;
  7. }
复制代码

  1. //判断队列是否为空
  2. bool QueueEmpty(SqQueue Q){
  3.   if (Q.front == Q.rear)
  4.           return true;
  5.   else
  6.           return false;
  7. }
复制代码

  1. //入队
  2. int EnQueue(SqQueue &Q,Person e)
  3. {
  4.         if((Q.rear+1)%MAXSIZE == Q.front) return ERROR;
  5.         Q.base[Q.rear] = e;
  6.         Q.rear=(Q.rear+1)%MAXSIZE;
  7.         return OK;
  8. }
复制代码

  1. //出队
  2. int DeQueue(SqQueue &Q,Person &e)
  3. {
  4.         if(Q.front==Q.rear) return ERROR;  //判断队列是否为空
  5.         e = Q.base[Q.front];
  6.         Q.front = (Q.front+1)%MAXSIZE;
  7.         return OK;
  8. }
复制代码

  1. //取队头元素
  2. Person GetHead(SqQueue &Q)
  3. {
  4.         if(Q.front!=Q.rear) return Q.base[Q.front];
  5.         else
  6.                 exit(ERROR);
  7. }
复制代码


游客,如果您要查看本帖隐藏内容请回复


  1. //主函数
  2. int main()
  3. {
  4.         Person d[N]={
  5.                 {"蔡蔡",'F'},
  6.                 {"黄黄",'F'},
  7.                 {"龙龙",'F'},
  8.                 {"易烊千玺",'M'},
  9.                 {"白敬亭",'M'},
  10.                 {"高杨",'M'},
  11.                 {"刘德华",'M'},
  12.                 {"彭于晏",'M'}
  13.         },*z=d;

  14.     DancerPartner(z,N);

  15.     return 0;
  16. }
复制代码



                               
登录/注册后可看大图

运行结果:
运行结果.jpg



                               
登录/注册后可看大图

或者头文件方法
注:这个可以自己输入舞者的数量和舞者的信息
  1. /*
  2. *author :LaoGu
  3. *time   :2021/10/17
  4. *purpose:循环队列的应用:舞者配对
  5. */
  6. #include<iostream>
  7. #include "link.h"    //一些队列的定义
  8. #include "peidui.h"  //舞者配对

  9. using namespace std;

  10. //输入舞者信息
  11. int Print(Person d[],int n)
  12. {
  13.         int j;
  14.         cout<<"请输入舞者信息\n";
  15.         cout<<"姓名   "<<"性别   "<<endl;
  16.         for(j=0;j<n;j++)
  17.         {
  18.                 cin>>d[j].name>>d[j].sex;
  19.         }
  20.         cout<<endl;
  21.         return 0;
  22. }

  23. //主函数
  24. int main()
  25. {
  26.         int n;
  27.         cout<<"请输入参加舞会的舞者的数量:";
  28.         cin>>n;
  29.         cout<<endl;
  30.         Person d[N],*z=d;

  31.         Print(z,n);

  32.         DancerPartner(z,n);
  33.         return 0;
  34. }
复制代码



                               
登录/注册后可看大图

两个自己定义的头文件
一、link文件
游客,如果您要查看本帖隐藏内容请回复



                               
登录/注册后可看大图

二、peidui文件
游客,如果您要查看本帖隐藏内容请回复


                               
登录/注册后可看大图

运行结果:
1634445544(1).png
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-10-17 22:17:50 | 显示全部楼层
在数组中,例如a[n]的n不能是变量,注意:n不是变量!!!  不然会出错
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-11-2 09:01:55 | 显示全部楼层
顶了
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-11-2 13:47:34 | 显示全部楼层

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2022-4-6 17:22:03 | 显示全部楼层
想看隐藏部分
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-4-26 23:22:42 | 显示全部楼层
1
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2022-10-12 11:26:09 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-5-11 12:55

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表