数 据 结 构 课程设计报告书 班级 学号 专业 姓名 课题描述: 一、 需求分析: 1
设计内容 一班有 m 个女生,有 n个男生(m 不等于 n),现要开一个舞会
男女生分别编号坐在舞池的两边的椅子上
每曲开始时,依次从男生和女生中各出一人配对跳舞, 本曲没成功配对者坐着等待下一曲找舞伴
请设计一系统模拟动态地显示出上述过程,要求如下: 1) 输出每曲配对情况 2) 计算出任何一个男生(编号为 X)和任意女生(编号为 Y),在第 K 曲配对跳舞的 情况
至少求出 K 的两个值
3) 尽量设计出多种算法及程序,可视情况适当加分 2
需求 本课题要对数目不等的男生女生跳舞进行搭配,设计需要解决每一首曲子 男生女生的搭配情况,要采用循环队列的模式来解决,男生和女生各在两个循环 的队列中,每首曲子开始,便在两个队首各取一人成功配对跳舞,并进入队尾, 等待下一次配对
例如:(3 男 5 女情况) 第一首:男 1 和女 1 第二首:男 2 和女 2
第四首:男 1 和女 4 二、 总体结构设计: 为实现上述功能和目的,要用到循环队列的相关知识,同时,要定义一定的抽的数据类型,主函数调用各个函数模块 1
各模块函数介绍: 1)class cirularQueue 作用:定义一个一个循环队列 2)~cirularQueue() 作用:定义析构函数,使对象在撤销时释放 3)bool IsFull() 作用:判断队列是否已满 4)bool IsEmpty() 作用:判断队列是否为空,用于出队列前使用 5)void push(T info) 作用:入队
每对舞伴跳完舞之后,做入队处理,到达队尾,等待下次跳舞
6)void Pop(T &info) 作用:出队
每取曲子响起时男生队列和女生队列作出队处理,两人跳舞
7)void GetHead(T &info)