return GetTop(OPND); //OPND 栈顶元素即为表达式求值结果
}
三、用队列实现舞伴问题的升级:
void DancePartner(Person dancer[], int num) {//结构数组 dancer 中存放跳舞的男女,num
是跳舞的人数。
InitQueue(Mdancers); //男士队列初始化
InitQueue(Fdancers); //女士队列初始化
Person p;
for (int i = 0; i < num; i++) //依次将跳舞者根据其性别入队
{
p = dancer[i];
if (p.sex == 'F')
EnQueue(Fdancers, p); //插入女队
else
EnQueue(Mdancers, p); //插入男队
}
int team,t,times;
cout<<"请输入演奏舞曲的数目:"<<endl;
cin>>times;
cout << "The dancing partners are:" << endl;
int lenM=(Mdancers.rear-Mdancers.front+MAXQSIZE)%MAXQSIZE;
int lenF=(Fdancers.rear-Mdancers.front+MAXQSIZE)%MAXQSIZE;
while(times--)
{
cout<<"--------请输入您要组合的队伍数目--------"<<endl;
cin>>team;
t=team;
while (team--) {//依次输出男女舞伴的姓名
DeQueue(Fdancers, p); //女士出队
cout << p.name << " "; //输出出队女士姓名
EnQueue(Fdancers, p);
DeQueue(Mdancers, p); //男士出队
cout << p.name << endl; //输出出队男士姓名
EnQueue(Mdancers, p);
}
if (!QueueEmpty(Fdancers)) { //女士队列非空,输出队头女士的姓名
p = GetHead(Fdancers); //取女士队头
cout << "The first man to get a partner is: " << endl;
cout << p.name << endl;
} else if (!QueueEmpty(Mdancers)) { //男士队列非空,输出队头男士的姓名
p = GetHead(Mdancers); //取男士队头
cout << "The first woman to get a partner is: " << p.name << endl;