网站开发工程师社交,网站开发费走什么科目,帝国cms入门到精通企业门户网站制作建站视频教程,wordpress多域名管理使用两个双端队列实现#xff0c;分别维护前半部分和后半部分中间元素可放在任意一个deque中维护#xff0c;这里使用前一个deque提供两个调整成员函数#xff0c;作用分别为使每个deque总为其代表的前(后)半部分#xff0c;即总是使其deque为总的一半
class FrontMiddleB…使用两个双端队列实现分别维护前半部分和后半部分中间元素可放在任意一个deque中维护这里使用前一个deque提供两个调整成员函数作用分别为使每个deque总为其代表的前(后)半部分即总是使其deque为总的一半
class FrontMiddleBackQueue {
private:dequeint front;dequeint back;
public:FrontMiddleBackQueue() {}void adjust_front() // 前半部分多出元素调整到后半部分{while(front.size() back.size()){int tmp front.back();front.pop_back();back.push_front(tmp);}}void adjust_back() // 后半部分多出元素调整到前半部分{while(front.size() back.size()){int t back.front();back.pop_front();front.push_back(t);}}void pushFront(int val) {front.push_front(val);adjust_front();}void pushMiddle(int val) {adjust_front(); // 先调整保证中间数据出现在前半部分front.push_back(val);adjust_front();}void pushBack(int val) {back.push_back(val);adjust_back();}int popFront() {adjust_back(); // 先调整尽可能保证有数据if(front.empty()) return -1;int tmp front.front();front.pop_front();adjust_back();return tmp;}int popMiddle() {adjust_back(); // 先调整尽可能保证有数据if(front.empty()) return -1;int tmp front.back();front.pop_back();adjust_back();return tmp;}int popBack() {adjust_front(); // 先调整尽可能保证有数据if(back.empty())return -1;int tmp back.back();back.pop_back();adjust_front();return tmp;}
};