定义队列结构和基本操作函数
输入男队和女队的成员信息
实现舞伴配对并显示结果
显示等待下一轮舞曲的成员
int EnQueue(SqQueue& Q, ElemType e) {
// 检查队列是否已满
if ((Q.rear + 1) % MAXSIZE == Q.front) {
return false; // 队满,无法入队
}
// 将元素 e 插入队列尾部,并更新 rear 指针
Q.data[Q.rear] = e;
Q.rear = (Q.rear + 1) % MAXSIZE;
return true; // 入队成功
}
int DeQueue(SqQueue& Q, ElemType& e) {
// 检查队列是否为空
if (Q.front == Q.rear) {
return false; // 队空,无法出队
}
// 获取队列头部元素,并更新 front 指针
e = Q.data[Q.front];
Q.front = (Q.front + 1) % MAXSIZE;
return true; // 出队成功
}
void DisplayQueue(SqQueue Q) {
int i = Q.front;
// 遍历队列元素并打印
while (i != Q.rear) {
printf("%c ", Q.data[i]);
i = (i + 1) % MAXSIZE;
}
printf("\n");
}
int main() {
SqQueue male, female; // 定义男队和女队的队列
ElemType m, f; // 定义男队和女队的成员
int i, n; // 定义循环变量和人数变量
// 输入并初始化男队
printf("请输入男队人数:");
scanf_s("%d", &n);
printf("请输入男队的所有成员:");
InitQueue(male);
for (i = 1; i <= n; i++) {
scanf_s(" %c", &m);
EnQueue(male, m); // 将成员入队
}
// 输入并初始化女队
printf("请输入女队人数:");
scanf_s("%d", &n);
printf("请输入女队的所有成员:");
InitQueue(female);
for (i = 1; i <= n; i++) {
scanf_s(" %c", &f);
EnQueue(female, f); // 将成员入队
}
// 输出舞伴组合
printf("舞伴组合如下:\n");
while (GetLength(male) > 0 && GetLength(female) > 0) {
DeQueue(male, m); // 男队出队一个成员
DeQueue(female, f); // 女队出队一个成员
printf("%c-%c ", m, f); // 输出舞伴组合
}
// 输出等待下一轮舞曲的成员
printf("\n等待下一轮舞曲的成员:\n");
printf("男队等待下一轮舞曲的成员:");
DisplayQueue(male); // 显示男队的成员
printf("女队等待下一轮舞曲的成员:");
DisplayQueue(female); // 显示女队的成员
}