65,186
社区成员




#include<stdio.h>
#include<iostream>
#include<assert.h>
template<class T>
class LinkQueueNode//结点类定义
{
public:
T data;
LinkQueueNode<T>* link;
LinkQueueNode(T& value):data(value),link(NULL){}
};
template<class T>
class LinkQueue
{
LinkQueueNode<T>* front;
LinkQueueNode<T>* back;
public:
LinkQueue():front(NULL),back(NULL){}
void EnQueue(T& element);
T DelQueue();
T& GetFront();
void MakeEmpty();
bool IsEmpty();
};
//实现如下
template<class T>
void LinkQueue<T>::EnQueue(T& value)
{
LinkQueueNode<T>* add=new LinkQueueNode<T>(value);
if(back==NULL)//添加第一个结点,让front指向这个结点
{
front=back=add;
}
else//如果队列中人家已经有结点,则需要改变back指针
{
back->link=add;
back=back->link;
}
}
template<class T>
T LinkQueue<T>::DelQueue()
{
//首先得判断是否为空队列
assert(!IsEmpty());
LinkQueueNode<T>* old=front;
T data=old->data;//保留原对头数据
front=front->link;//移动对头指针
if(back==old)
back=NULL;
delete old;
return data;
}
template<class T>
T& LinkQueue<T>::GetFront()
{
assert(!IsEmpty());//断言,这东西挺好使滴
return front->data;
}
template<class T>
void LinkQueue<T>::MakeEmpty()
{
while(!IsEmpty())
{
this->DelQueue();
}
}
template<class T>
bool LinkQueue<T>::IsEmpty()
{
return front==NULL;
}
#include<string>
using namespace std;
struct dancer//一会就让队列中存储这种结构体类型
{
string name;
char sex;
};
int main()
{
cout<<"请输入舞伴总数量:"<<endl;
int num;
cin>>num;
LinkQueue<dancer> mdancer;
LinkQueue<dancer> fdancer;
for(int i=0;i<num;i++)
{
cout<<"请输入舞者性别(f(女) or m(男))及姓名:"<<endl;
char sex;
cin>>sex;
string name;
cin>>name;
dancer newdancer;
newdancer.name=name;
newdancer.sex=sex;
if(sex=='f')//female
{
fdancer.EnQueue(newdancer);
}
if(sex=='m')//male
{
mdancer.EnQueue(newdancer);
}
}
while((!mdancer.IsEmpty()) && (!mdancer.IsEmpty()))//男女两个队列都有人
{
cout<<mdancer.DelQueue().name<<"\t<---配对--->\t"<<fdancer.DelQueue().name<<endl;
}
if(!mdancer.IsEmpty())//剩下的帅锅
{
cout<<mdancer.GetFront().name<<"先生还在干等着呢!"<<endl;
}
else if(!fdancer.IsEmpty())//都是剩下的霉女
{
cout<<fdancer.GetFront().name<<"女士还在干等着呢!"<<endl;
}
else
cout<<"配对完美结束!"<<endl;
return 0;
}
while((!mdancer.IsEmpty()) && (!fdancer.IsEmpty()))//男女两个队列都有人