简单的队列舞伴配对程序

定义队列结构和基本操作函数

输入男队和女队的成员信息

实现舞伴配对并显示结果

显示等待下一轮舞曲的成员

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);  // 显示女队的成员

}

  • 9
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

jzybkse

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值