C++队列应用:舞伴配对程序详解
C++队列应用:舞伴配对程序详解
这篇文章将为你详细介绍一个使用C++队列数据结构实现的舞伴配对程序。
程序功能
该程序模拟舞伴配对的过程:
- 用户输入一系列舞者的姓名和性别。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
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; }
代码解释
-
包含头文件: -
#include <iostream>: 用于输入输出操作。 -#include <string>: 用于字符串处理。 -#include 'SqQueue.h': 包含自定义的队列类定义和操作。 -
定义结构体
person: 表示舞者信息,包括姓名和性别。 -
定义队列元素类型
ElemType: 使用typedef将person定义为队列元素类型,方便后续使用。 -
创建队列对象: 创建两个队列对象
M和F,分别用于存储男舞者和女舞者。 -
读取舞者信息: 通过循环读取用户输入的舞者信息,并根据性别将舞者加入对应的队列。
-
配对舞伴: 当男舞者队列和女舞者队列都不为空时,循环执行以下操作: - 从女舞者队列中取出队头元素(下一个女舞者)。 - 从男舞者队列中取出队头元素(下一个男舞者)。 - 输出配对结果。
-
输出剩余舞者信息: 最后,检查两个队列是否为空,如果不为空,则输出剩余未配对的舞者信息。
总结
这个舞伴配对程序简单地展示了队列数据结构的应用。在实际应用中,队列可以用于各种场景,例如任务调度、消息队列等等。理解队列的基本原理和操作方法对于学习数据结构和算法至关重要。
原文地址: https://www.cveoy.top/t/topic/bC4f 著作权归作者所有。请勿转载和采集!