数据结构实验项目三:队列的基本操作应用

来源:互联网 发布:通达信日线数据 编辑:程序博客网 时间:2024/06/05 02:03


本代码设计了变量n,即n个舞伴。

代码如下:

#include <iostream>#include <stdlib.h>  #include <string.h> #include <cstdio>#define maxqsize 100using namespace std;typedef struct //跳舞者个人信息 {char name[20];char sex;//男生性别用m来表示,女生性别用f来表示}person;typedef struct      //队列的顺序存储结构 {person *base;int front;int rear;}sqqueue; bool initqueue(sqqueue &Q)   //队列的初始化 {Q.base =new person[maxqsize];  //为队列分配一个最大容量为maxqsize的数组空间 if(!Q.base )  exit(0);    //存储分配失败 Q.front =Q.rear =0; //头指针和尾指针为零,队列为空 return true;}bool queueempty(sqqueue  Q)       //判断队列是否为空                           { if(Q.front==Q.rear)          return true;      else          return false;  }int queuelength(sqqueue Q)  //求队列长度 {return (Q.rear -Q.front +maxqsize)%maxqsize;}bool enqueue(sqqueue &Q,person e)  //队列的入队 {if ((Q.rear +1)%maxqsize==Q.front)return false;Q.base[Q.rear ]=e;Q.rear =(Q.rear +1)%maxqsize;return true;}bool dequeue(sqqueue &Q,person &e)  //队列的出队 {if(Q.front ==Q.rear )return false;e=Q.base [Q.front ];Q.front =(Q.front +1)%maxqsize;return true;}person gethead(sqqueue Q)  //取队列的队头元素 {if(Q.front!=Q.rear )return Q.base[Q.front];}void dancepartner(person dancer[],int num) // 舞伴配对 {sqqueue  mdancers,fdancers;person p;initqueue(mdancers);   //男生队列初始化 initqueue(fdancers);   //女生队列初始化 for(int i=0;i<num;i++)  //依次将跳舞者根据其性别入队 {p = dancer[i];if(p.sex=='f')  enqueue(fdancers,p);//插入女队 else  enqueue(mdancers,p);//插入男队 }cout<<endl;cout<<"--成功配对的舞伴--\n";while(!queueempty(fdancers)&&!queueempty(mdancers)){dequeue(fdancers,p);  //女生出队 cout<<"    "<<p.name<<"--";//输出出队女生姓名 dequeue(mdancers,p);//男生出队cout<<p.name<<endl;//输出出队男生姓名 }if(!queueempty(fdancers)) //女生队列非空,输出队头女生的姓名 {p=gethead(fdancers);  //取女生队头 cout<<endl;cout<<"下次第一个匹配舞伴的女生是: "<<p.name<<endl;}else if(!queueempty(mdancers))  //男生队列非空,输出队头男生的姓名{p=gethead(mdancers);//取男生队头cout<<"下次第一个匹配舞伴的男生是: "<<p.name<<endl;}}int main(){person dancer[1000];int n; cout<<"请输入所有舞者的人数: "; cin>>n; cout<<endl;cout<<"请输入"<<n<<"个舞者的信息: "<<endl<<endl; //男生性别用m来表示,女生性别用f来表示 for(int i=0;i<n;i++){cout<<"**请输入第"<<i+1<<"个舞者的信息: "<<endl; cout<<"  姓名:" ; cin>>dancer[i].name;cout<<"  性别:" ;cin>>dancer[i].sex; }dancepartner(dancer,n);return 0;}