题目的主要信息:

  • 设计一个排队程序,用户有普通客人和 VIP 客人之分,VIP 客人不排队(即 VIP 客人在队列头部)
  • 将已有的guest1(guest1排在guest2前)和guest2放入队列中,并将VIP客人新增至队列头部

具体做法:

题目给了一个deque,这是一个双向队列,可以从前面进也可以从后面进,可以从前面出也可以从后面出。

题目所给输出都是从前面开始,因此我们要将两位非bip客人排在后面,vip客人排在前面。对于非vip客人,遵循先进先出的策略排队,我们直接将去push_back到队列最后面,其中guest2比guest1晚到,因此先排第一个人再排第二个人,这样第二个人就在第一个人后面。对于最后的vip客人,我们直接push_front将其放到队列最前面。 alt

#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;
}

复杂度分析:

  • 时间复杂度:
  • 空间复杂度: