题目的主要信息:
- 设计一个排队程序,用户有普通客人和 VIP 客人之分,VIP 客人不排队(即 VIP 客人在队列头部)
- 将已有的guest1(guest1排在guest2前)和guest2放入队列中,并将VIP客人新增至队列头部
具体做法:
题目给了一个deque,这是一个双向队列,可以从前面进也可以从后面进,可以从前面出也可以从后面出。
题目所给输出都是从前面开始,因此我们要将两位非bip客人排在后面,vip客人排在前面。对于非vip客人,遵循先进先出的策略排队,我们直接将去push_back到队列最后面,其中guest2比guest1晚到,因此先排第一个人再排第二个人,这样第二个人就在第一个人后面。对于最后的vip客人,我们直接push_front将其放到队列最前面。
#include <iostream>
#include <deque>
using namespace std;
class Guest {
public:
string name;
bool vip;
Guest(string name, bool vip) {
this->name = name;
this->vip = vip;
}
};
int main() {
Guest guest1("张三", false);
Guest guest2("李四", false);
Guest vipGuest("王五", true);
deque<Guest> deque;
deque.push_back(guest1); //普通两位客人从队列后面排入
deque.push_back(guest2);
deque.push_front(vipGuest); //vip客人从队列前面排入
for (Guest g : deque) {
cout << g.name << " ";
}
return 0;
}
复杂度分析:
- 时间复杂度:
- 空间复杂度: