学生搭配问题

一班有m个女生,有n个男生(m不等于n),现要开一个舞会。男女生分别编号坐在舞池的两边的椅子上。每曲开始时,依次从男生和女生中各出一人配对跳舞,本曲没成功配对者坐着等待下一曲找舞伴。请设计一系统模拟动态地显示出上述过程,要求如下:(1)输出每曲配对情况;(2)计算出任何一个男生(编号为X)和任意女生(编号为Y),在第K曲配对跳舞的情况。至少求出K的两个值;(3)尽量设计出多种算法及程序。提示:用队列来解决比较方便。

题解:

程序采用简单菜单驱动方式,通过让用户输入女生数量与男生数量以及歌曲的数量,接着输入要查找的男生编号与女生编号,界面上就会显示出每曲配对情况以及计算出任何一个男生(编号为X)和任意女生(编号为Y),在第K曲配对跳舞的情况。

#include <string.h>
#include <malloc.h>
#include<stdio.h>
#include <time.h>
#define OK 1
#define ERROR 0
#define OVERFLOW -1
#define MAXSIZE 60
#define TRUE 1
#define FALSE 0typedef int system;   typedef struct QNode{int num;struct QNode *next;
}QNode,* QueuePtr;    //队列节点 typedef struct{QueuePtr front;QueuePtr rear;
}LinkQueue;   // 队列 void sleep( clock_t wait ); //延迟作用
void InitQ(LinkQueue &Q); //初始化队列函数
void EnQueue(LinkQueue &Q,int num);  //入队列
void DeQueue(LinkQueue &Q, int &num);  //出队列
void printF(LinkQueue &F,int i); //打印第i首曲子时女生情况
void printM(LinkQueue &M,int i);  //打印第i首曲子男生情况void EnQueue(LinkQueue &Q,int num)  //入队列
{QueuePtr p;p=(QueuePtr)malloc(sizeof(QNode));p->num=num;p->next=NULL;Q.rear->next=p;Q.rear=p;
}void DeQueue(LinkQueue &Q, int &num)  //出队列
{QueuePtr p,q;if(Q.front==Q.rear)printf("队列为空");p=Q.front->next;    num=p->num;Q.front->next=p->next;q=p->next;if(Q.rear==q)Q.rear=Q.front;free(p);
}void InitQ(LinkQueue &Q) //初始化队列函数
{QueuePtr p;p=(QueuePtr)malloc(sizeof(QNode));Q.front=p;Q.rear=p;Q.front->next=NULL;
}void printF(LinkQueue &F,int i)
{   //打印第i首曲子时女生情况 QueuePtr p;int n=1;while(n<i){printf("_ ");n++;}p=F.front->next;while(F.rear!=p){printf("%d ",p->num);p=p->next;}printf("%d \n",p->num);
}void printM(LinkQueue &M,int i)
{//打印第i首曲子男生情况QueuePtr p;int n=1;while(n<i){printf("_ ");n++;}p=M.front->next;while(M.rear!=p){printf("%d ",p->num);p=p->next;}printf("%d \n",p->num);
}void sleep( clock_t wait ) //延迟作用
{clock_t goal;goal = wait + clock();while( goal > clock() ) ;
}//主函数
int main()
{int m,n,k,i,a,b;int count=0,num;QueuePtr p,q;LinkQueue F; //女队列 LinkQueue M; //男队列 printf("输入女生数量:");scanf("%d",&m);printf("输入男生数量:");scanf("%d",&n);printf("输入歌曲数目:");scanf("%d",&k);printf("输入要查找的男生编号:");scanf("%d",&a);printf("输入要查找的女生编号:");scanf("%d",&b);InitQ(F);InitQ(M);for(i=1;i<=m;i++){EnQueue(F,i);}for(i=1;i<=n;i++){EnQueue(M,i);}for(i=1;i<=k;i++){printf("第%d首歌曲 \n",i);printF(F,i);printM(M,i);p=F.front->next;q=M.front->next;printf("此时配对跳舞的是第%d号女生和第%d号男生\n",p->num,q->num);if(p->num==a&&q->num==b){count++;printf("===========================》第%d曲是要查找的指定男女生一起跳舞的歌曲\n",i);}sleep(100);DeQueue(F,num);EnQueue(F,num);DeQueue(M,num);EnQueue(M,num);}return 0;
}

学生搭配问题——C++实现队列相关推荐

  1. 学生搭配问题数据结构报告c语言,数据结构课程设计_学生搭配问题.doc

    数据结构课程设计_学生搭配问题 数据结构课程设计 题 目: 学生搭配问题 学 院: 班 级: 学 生 姓 名: 学 生 学 号: 指 导 教 师: 2012 年 12 月 3 日 课程设计任务书 姓名 ...

  2. 学生搭配问题数据结构报告c语言,数据结构课设学生搭配问题

    数据结构课设学生搭配问题 数 据 结 构 课程设计报告书 班级 学号 专业 姓名 课题描述: 一. 需求分析: 1. 设计内容 一班有m个女生,有n个男生(m不等于n),现要开一个舞会. 男女生分别编 ...

  3. java利用队列实现一个学生排队买票功能

    1.利用队列实现一个学生排队买票功能 1.定义一个学生类Student,包括学号No.姓名Name.性别Gender.年龄Age等信息 2.定义一个队列类Queue,用于将学生进行队列排序 3.可以从 ...

  4. 机器学习Tensorflow基本操作:线程队列图像

    一.线程和队列 在使用TensorFlow进行异步计算时,队列是一种强大的机制. 为了感受一下队列,让我们来看一个简单的例子.我们先创建一个"先入先出"的队列(FIFOQueue) ...

  5. Android消息队列图片记录

    很早之前为了给学生讲明白整个消息队列是怎么个情况,于是大概阅读了一下消息队列的整个工作过程,鉴于网上大部分都是文字说明,没有一个图例,于是做出了下面这张图,权当作以后复习之用,也供大家学习参考,有什么 ...

  6. 教你怎么利用电子教室软件提升学生的学习兴趣

    多媒体电子教室所用的软件有:极域电子教室.传奇世纪因特网电子教室软件.释锐电子教室.蓝创多媒体电子教室.联想电子教室.--等等.并且我们知道电子教室的作用是,多媒体电子教室是在计算机教室中,把影视.图 ...

  7. [转]linux下基于SMP架构的多队列网卡的调优(Multi-queue network interfaces with SMP on Linux)

    转自: http://blog.csdn.net/vah101/article/details/38615795 在许多商业应用场景下,使用linux来搭建路由器是一种可选的方案.在这篇博文中,我们将 ...

  8. (算法入门)栈和队列-停车场管理系统

    一.实验目的 通过停车场管理的程序设计,帮助学生熟练掌握栈和队列的基本操作及用栈与队列解决具体问题的基本方法. 二.实验内容 设停车场是一个可以停放n辆汽车的狭长通道,且只有一个大门可供汽车进出. 汽 ...

  9. 软件工程实践2017 结队项目——第二次作业

    作业链接 031502333 GITHUB LINK 前言 近期比较倾向于使用Go语言写小工具,所以在看到作业不限制编程语言时就决定使用Go作为开发语言.而由于Go的诸多优秀特性,使得编写代码效率极高 ...

最新文章

  1. FineUI小技巧(4)关闭窗体那些事
  2. 解决:Sublime Text3 packagecontrol.io 无法访问的问题
  3. c语言中的指针语法,C语言中指针的用法介绍
  4. autoconf.mk详析
  5. python iot_使用EduBlocks,适用于Linux的i3窗口管理器,必读新闻通讯,CI / CD,敏捷,IoT等进行Python编程
  6. 教师节PSD分层海报设计模板 | 最好的海报,送给最好的老师们
  7. JavaScript 中 Property 和 Attribute 的区别
  8. 【方案分享】2020娜扎X薇娅SKG娜小古直播方案.pdf(附下载链接)
  9. StalinLocker:一款会在十分钟之后删除文件和数据的勒索软件
  10. 纯CSS实现三列布局(两边固定,中间自适应)
  11. paip.论程序断点的类型以及设置总结
  12. CENTOS7安装搜狗输入法和PYCHARM光标跟随记录
  13. 关于antd组件 datePicker和moment出现英文的坑
  14. Python+networkx 网络可视化方法
  15. 已知直线上两点求直线的一般式方程
  16. Ajax关于readyState和status
  17. php调用nexmo发送短信,使用Nexmo或Twilio仅使用电话号码进行登录和验证
  18. java杨戬的角色_非人哉:游戏角色反映了神仙们的爱好,杨戬太让人意外了
  19. angular.js:13920 Error: [$injector:unpr] Unknown provider: $scopeProvider - $scope - testServe
  20. 10Redis--主从复制 非常重要、一主二仆、薪火相传、反客为主、哨兵模式

热门文章

  1. 视觉特效视觉插件包FxFactory pro 8 集各fcpx插件于一体
  2. 一个小的java作业,第一次上传CSDN,原创的
  3. 初探富文本之编辑器引擎
  4. java导出excel 边框不全_POI导出excel,合并单元格后没有边框
  5. IBM-kmeans-坏盘预测
  6. 大数据带来新机遇:如何利用大数据技术优化跨境电商运营?
  7. ascii art c语言,ASCII art (简体中文)
  8. Docker应用学习
  9. OPC 0x00000005 问题
  10. java计算机毕业设计小型企业员工工资管理系统源码+系统+数据库+lw文档+mybatis+运行部署