数据结构课设学生搭配问题(共12页).doc
《数据结构课设学生搭配问题(共12页).doc》由会员分享,可在线阅读,更多相关《数据结构课设学生搭配问题(共12页).doc(12页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上数 据 结 构课程设计报告书班级 学号 专业 姓名 课题描述:一、 需求分析:1. 设计内容一班有m个女生,有n个男生(m不等于n),现要开一个舞会. 男女生分别编号坐在舞池的两边的椅子上.每曲开始时,依次从男生和女生中各出一人配对跳舞, 本曲没成功配对者坐着等待下一曲找舞伴.请设计一系统模拟动态地显示出上述过程,要求如下:1) 输出每曲配对情况2) 计算出任何一个男生(编号为X)和任意女生(编号为Y),在第K曲配对跳舞的 情况.至少求出K的两个值.3) 尽量设计出多种算法及程序,可视情况适当加分 2.需求 本课题要对数目不等的男生女生跳舞进行搭配,设计需要解决每一首
2、曲子 男生女生的搭配情况,要采用循环队列的模式来解决,男生和女生各在两个循环 的队列中,每首曲子开始,便在两个队首各取一人成功配对跳舞,并进入队尾, 等待下一次配对。 例如:(3男5女情况) 第一首:男1和女1 第二首:男2和女2. 第四首:男1和女4二、 总体结构设计: 为实现上述功能和目的,要用到循环队列的相关知识,同时,要定义一定的抽的数据类型,主函数调用各个函数模块 1.各模块函数介绍:1)class cirularQueue 作用:定义一个一个循环队列2)cirularQueue() 作用:定义析构函数,使对象在撤销时释放3)bool IsFull() 作用:判断队列是否已满4)bo
3、ol IsEmpty() 作用:判断队列是否为空,用于出队列前使用5)void push(T info) 作用:入队。每对舞伴跳完舞之后,做入队处理,到达队尾,等待下次跳舞。6)void Pop(T &info) 作用:出队。每取曲子响起时男生队列和女生队列作出队处理,两人跳舞。7)void GetHead(T &info) 作用:取队首元素,对出队的男女进行识别。8)void Initqueue(cirularQueue&,int);作用:初始化队列9)void display(int,int);作用:根据男生和女生的人数和曲目的数目,来判断每曲歌的男女配对情况 10)void charge
4、(int,int); 作用:判断指定组合能否配对成功 2. 本程序包含三个模块:1)主程序模块: void main() 初始化; do 接受命令; 处理命令;while(“命令”=”退出”) 2)、集合单元模块实现集合的各个函数模块3)、结点结构单元模块定义集合的结点结构三、 各子模块设计:1主函数调用关系图cirularQueue()void GetHead(T &info)class cirularQueue主函数k曲配对每曲配对数据输入输出编号void Pop(T &info)void push(T info)IsEmpty()bool IsFull()图main() iMaxsize
5、-1Push(i)endbegan 2初始化示意 否 图void Initqueue(cirularQueue &Q,int m)3每曲配对函数调用关系图void display(int,int)初始化男女循环队列k=songnummman.pop(x)woman.pop(y)否 是 输出k首男x女y跳舞 man.push(x)woman.push(y)endk+图void display(int,int)4第k曲配对函数调用图void charge(int,int)输出他们不会一起跳breakendcount=songnummman.pop(x)woman.pop(y)count+初始化男女
6、循环队列(x=a)&(y=b)man.push(x)woman.push(y)男a女b第count跳图void charge(int,int)4队满判断bool IsFull()首尾顺序相邻队列为满5对空判断原则bool IsEmpty()首尾指针相等队列为空6入队流程void push(T info)不能入队队满队尾进入尾指针移到 7出队流程void Pop(T &info)不能出队队空队头出列头指针移到8.取队首元素代码void GetHead(T &info)四、 编程实现:#includetemplate class cirularQueue /定义一个一个循环队列 private:
7、int MaxSize; int front; /头指针 int rear; /尾指针 T *data; public: cirularQueue(int MaxLength) MaxSize=MaxLength; front=rear=0; data=new TMaxLength; cirularQueue() /定义析构函数,使对象在撤销时释放 front=rear=0; delete data; void Initqueue() /队列的申明 for(int i=0;imaxSize-1;i+) push(i);bool IsFull() /判断队列是否已满 if(rear+1)%Max
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 学生 搭配 问题 12
限制150内