Files

77 lines
1.3 KiB
C++
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#include <iostream>
#include "LinkQueue.h"
using namespace std;
struct Car
{
int no; //车号
char type; //c:客车t:货车
};
//求队列长度
template<class DT>
int QueueLength(LinkQueue<DT> Q)
{
int n = 0;
QNode<DT>* p = Q.front->next;
while (p)
{
p = p->next;
n++;
}
return n;
}
//车辆入队
void Ferry(LinkQueue<Car>& Qc, LinkQueue<Car>& Qt)
{
int i = 0;
Car e;
while (QueueLength(Qc) + QueueLength(Qt) > 0) //队列非空
{
if (QueueLength(Qc) > 0) //客车队列非空
{
while ((i < 4) && (QueueLength(Qc) > 0)) //客车数小于4且客车队列非空
{
DeQueue(Qc, e); //客车出队
cout << "车号:" << e.no << "\t类型:" << e.type << endl;
i++;
}
i = 0;
}
if (QueueLength(Qt) > 0) //货车队列非空
{
DeQueue(Qt, e); //货车出队
cout << "车号:" << e.no << "\t类型:" << e.type << endl;
}
}
cout << "所有车辆已过江!" << endl;
}
int main()
{
LinkQueue<Car> Qc, Qt;
Car e;
int i, n;
InitQueue(Qc);
InitQueue(Qt);
cout << "客车数:";
cin >> n;
for (i = 1; i <= n; i++) //客车入队
{
e.no = i;
e.type = 'c';
EnQueue(Qc, e);
}
cout << "货车数:";
cin >> n;
for (i = 1; i <= n; i++) //货车入队
{
e.no = i;
e.type = 't';
EnQueue(Qt, e);
}
Ferry(Qc, Qt); //车辆过江
DestroyQueue(Qc);
DestroyQueue(Qt);
return 0;
}