题意整理。
- 设计一个排队程序,用户有普通客人和VIP客人之分,VIP客人不排队。
方法一(队列)
1.解题思路
- 首先定义deque容器。
- 将guest1和guest2分别从队尾入队。将vipGuest从队头入队。
- 由于队列先进先出的特性,guest1和guest2会按顺序入队和出队,而vipGuest直接从队头入队,相当于插队了,所以不会排队。
图解展示:
2.代码实现
#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;
//将guest1和guest2分别从队尾入队
deque.push_back(guest1);
deque.push_back(guest2);
//将vipGuest从队头入队
deque.push_front(vipGuest);
for (Guest g : deque) {
cout << g.name << " ";
}
return 0;
}
3.复杂度分析
- 时间复杂度:只需常数次入队操作,所以时间复杂度为。
- 空间复杂度:需要额外大小为3的deque容器,所以空间复杂度为。