6-8 舞伴问题 分数 15

6-8 舞伴问题 分数 15_第1张图片

void DancePartner(DataType dancer[], int num)
{
    LinkQueue maleQueue = SetNullQueue_Link();
    LinkQueue femaleQueue = SetNullQueue_Link();

    // 将男士和女士的信息分别加入对应的队列
    for (int i = 0; i < num; i++) 
    {
        if (dancer[i].sex == 'M')
        {
            EnQueue_link(maleQueue, dancer[i]);
        }
        else if (dancer[i].sex == 'F')
        {
            EnQueue_link(femaleQueue, dancer[i]);
        }
    }

    // 配对舞伴
    while (!IsNullQueue_link(maleQueue) && !IsNullQueue_link(femaleQueue)) 
    {
        DataType male = FrontQueue_link(maleQueue);
        DataType female = FrontQueue_link(femaleQueue);

        printf("%s %s\n", female.name, male.name);

        DeQueue_link(maleQueue);
        DeQueue_link(femaleQueue);
    }

    printf("\n");
    // 输出没有配对的队头元素的姓名
    if (!IsNullQueue_link(maleQueue)) 
    {
        DataType single = FrontQueue_link(maleQueue);
        printf("%s\n", single.name);
    }

    if (!IsNullQueue_link(femaleQueue)) 
    {
        DataType single = FrontQueue_link(femaleQueue);
        printf("%s\n", single.name);
    }
}

你可能感兴趣的:(C家家精品好题,开发语言,c++,数据结构)