下面是使用C++顺序表实现该电子排班表的代码示例:
#include <iostream>
#include <vector>
using namespace std;
// 定义理发师类
class Barber {
public:
int id;
bool isBusy;
Barber(int _id) : id(_id), isBusy(false) {}
};
// 顺序表类
class SeqList {
private:
vector<Barber> barbers; // 存储理发师的容器
public:
SeqList() {
for (int i = 101; i <= 110; i++) {
barbers.push_back(Barber(i)); // 初始化10位理发师
}
}
void assignBarber(int barberId) {
if (barberId == 0) { // 没有指定理发师,安排排班表第一位
barberId = barbers.front().id;
barbers.erase(barbers.begin());
} else { // 指定了理发师,查找是否在排班表中
for (auto it = barbers.begin(); it != barbers.end(); ++it) {
if (it->id == barberId) {
barbers.erase(it);
break;
}
}
}
cout << "Assign barber " << barberId << " to the customer." << endl;
// 将指定的理发师添加到队列末尾
barbers.push_back(Barber(barberId));
}
void finishBarber(int barberId) {
cout << "Finish barber " << barberId << "'s work." << endl;
// 查找指定理发师并从队列中删除
for (auto it = barbers.begin(); it != barbers.end(); ++it) {
if (it->id == barberId) {
barbers.erase(it);
break;
}
}
// 将指定理发师添加到队列末尾
barbers.push_back(Barber(barberId));
}
void printSchedule() {
for (const auto& barber : barbers) {
cout << barber.id << "-";
}
cout << endl;
}
};
int main() {
int n; // 操作数
cin >> n;
SeqList seqList;
while (n--) {
string operation;
int barberId;
cin >> operation >> barberId;
if (operation == "assign") {
seqList.assignBarber(barberId);
} else if (operation == "finish") {
seqList.finishBarber(barberId);
}
seqList.printSchedule();
}
return 0;
}
这个程序使用了一个顺序表(SeqList)来存储理发师的信息,通过调用不同的成员函数来实现对排班表的操作。运行程序后,根据输入的操作进行相应的安排和工作结束动作,并输出每次操作后的排班表状态。
内容由零声教学AI助手提供,问题来源于学员提问




