C++队列应用:舞伴配对程序详解

这篇文章将为你详细介绍一个使用C++队列数据结构实现的舞伴配对程序。

程序功能

该程序模拟舞伴配对的过程:

  1. 用户输入一系列舞者的姓名和性别。2. 程序将男舞者和女舞者分别存储在不同的队列中。3. 当两个队列都不为空时,程序依次从队列中取出队首的男舞者和女舞者进行配对。4. 最后,程序输出剩余的未配对舞者信息。

代码实现cpp#include #include #include 'SqQueue.h' // 假设SqQueue.h文件包含了队列的定义和操作

using namespace std;

struct person { char name[20]; char sex; // 性别,'M'表示男,'F'表示女};

typedef person ElemType;

int main() { SqQueue M(50), F(50); // 创建男舞者队列和女舞者队列 person p;

cout << '依次输入舞者的姓名和性别,以空格分隔。以'##'结束:' << endl;    cin >> p.name >> p.sex;

// 读取舞者信息并加入对应的队列    while (p.sex != '#') {        if (p.sex == 'M' || p.sex == 'm')            M.Append(p); // 男舞者加入队列M        else if (p.sex == 'F' || p.sex == 'f')            F.Append(p); // 女舞者加入队列F        else {            cout << '性别输入错误,请重新输入性别: ';            cin >> p.sex;            continue;        }        cin >> p.name >> p.sex;    }

// 输出配对结果    cout << endl << '配对的舞伴是:' << endl;    while (!F.Empty() && !M.Empty()) {        p = F.GetHead(); // 获取女舞者队列的队头元素        F.Remove(); // 将队头元素出队        cout << p.name << ' ';        p = M.GetHead(); // 获取男舞者队列的队头元素        M.Remove(); // 将队头元素出队        cout << p.name << endl;    }

// 输出剩余未配对的舞者信息    if (!F.Empty()) {        cout << endl << '还有' << F.Length() << '位女舞者在等待' << endl;        p = F.GetHead();        cout << p.name << ' 将最先得到舞伴。' << endl;    } else if (!M.Empty()) {        cout << endl << '还有' << M.Length() << '位男舞者在等待' << endl;        p = M.GetHead();        cout << p.name << ' 将最先得到舞伴。' << endl;    } else {        cout << '没有等待的舞者。' << endl;    }

system('pause');    return 0; }

代码解释

  1. 包含头文件: - #include <iostream>: 用于输入输出操作。 - #include <string>: 用于字符串处理。 - #include 'SqQueue.h': 包含自定义的队列类定义和操作。

  2. 定义结构体 person: 表示舞者信息,包括姓名和性别。

  3. 定义队列元素类型 ElemType: 使用 typedefperson 定义为队列元素类型,方便后续使用。

  4. 创建队列对象: 创建两个队列对象 MF,分别用于存储男舞者和女舞者。

  5. 读取舞者信息: 通过循环读取用户输入的舞者信息,并根据性别将舞者加入对应的队列。

  6. 配对舞伴: 当男舞者队列和女舞者队列都不为空时,循环执行以下操作: - 从女舞者队列中取出队头元素(下一个女舞者)。 - 从男舞者队列中取出队头元素(下一个男舞者)。 - 输出配对结果。

  7. 输出剩余舞者信息: 最后,检查两个队列是否为空,如果不为空,则输出剩余未配对的舞者信息。

总结

这个舞伴配对程序简单地展示了队列数据结构的应用。在实际应用中,队列可以用于各种场景,例如任务调度、消息队列等等。理解队列的基本原理和操作方法对于学习数据结构和算法至关重要。

C++队列应用:舞伴配对程序详解

原文地址: https://www.cveoy.top/t/topic/bC4f 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录