数据结构(C++语言)---舞伴问题.doc_第1页
数据结构(C++语言)---舞伴问题.doc_第2页
数据结构(C++语言)---舞伴问题.doc_第3页
数据结构(C++语言)---舞伴问题.doc_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

问题叙述: 在一个舞会上,男士们和女士们进入舞厅,各自排成一队。跳舞开始时,依次从男队和女队的队列头上各出一个人进行配对。若两队初始人数不同,则较长的那一队中未配对者等待下一轮舞曲。先入队的男士或女士先出队配成舞伴,因此该问题是具有先进先出的特性,可以用队列作为算法的数据结构。在算法中,假设男士和女士的记录存放在一个数组中作为输入,然后依次扫描该数组的各元素,并根据性别来决定是进入男队还是女队。当这两个队列构造完成之后,依次将两对当前的队头元素出队来配成舞伴,直至某队列变空为止。此时,若某队列仍有等待配对者,算法输出此队列中等待者的人数及排在队头的等待者的名字,他(或她)将是下一轮舞曲开始时第一个可获得舞伴的人。具体代码如下:#include #include using namespace std;templateclass CirQueueprivate:T *q;int front;int rear;int maxSize;public:CirQueue(int m);CirQueue();void EnQueue(T x);T DeQueue();T GetHead();T GetLast();T InitQueue();int IsEmpty();int IsFull();void Clear();templateCirQueue:CirQueue(int m)q =new Tm;maxSize=m;front=rear=0;templateCirQueue:CirQueue()delete q;front=rear=0;maxSize=0;templatevoid CirQueue:EnQueue(T x)if (rear+1)%maxSize=front)coutFullendl;qrear=x;rear=(rear+1)%maxSize;templateT CirQueue:DeQueue()T x;if(front=rear)cout下溢endl;x=qfront;front=(front+1)%maxSize;return x;templateT CirQueue:GetHead()T x;if (front=rear)cout队空,无队顶元素endl;x=qfront;return x;templateT CirQueue:GetLast()T x;if(rear=front)cout队空,无队尾元素endl;x=qrear;return x;template int CirQueue:IsEmpty()if (rear = front) return 1;else return 0;template int CirQueue:IsFull()if (rear+1)%maxSize = front) return 1;else return 0;struct dancer char name20; char sex;int main() cout请输入舞伴总数量endl;CirQueue mdancer(10);CirQueue fdancer(10);ifstream in(source.txt);while(!in.eof() cout请输入舞者性别(f(女)or m(男)及姓名 temp.sex;in ;if (temp.sex = f)fdancer.EnQueue(temp);elsemdancer.EnQueue(temp);while( (!mdancer.IsEmpty()&!(fdancer.IsEmpty() ) cout mdancer.DeQueue().name - fdancer.DeQueue().name endl; if(!mdancer.IsEmpty() coutmdancer.GetHead().nameendl;e

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论