#include<iostream> #include<vector> using namespace std; class stack { private: vector<int> vec;//用来保存当前进栈的值 vector<int> max_vec; public: void push(int a) { vec.push_back(a); if(max_vec.size()==0||a>vec[max_vec[max_vec.size()-1]]) { max_vec.push_back(vec.size()-1); } } int pop() { if(vec.size()==0) return 0; if(vec.size()-1==max_vec[max_vec.size()-1]) { max_vec.pop_back(); } int d=vec[vec.size()-1]; vec.pop_back(); return d; } bool empty() { return max_vec.size()==0; } int max_value() { if(!vec.empty()) { int max_pos=max_vec[max_vec.size()-1]; return vec[max_pos]; } return -1000; } }; class queue { private: stack a,b; public: void enqueue(int a) { b.push(a); } void delete_queue() { if(a.empty()) { while(!b.empty()) { a.push(b.pop()); } } a.pop(); } int max() { return a.max_value()>b.max_value()?a.max_value():b.max_value(); } }; int main() { queue q1; q1.enqueue(1); q1.enqueue(3); q1.enqueue(2); q1.delete_queue(); q1.delete_queue(); cout<<q1.max()<<endl; system("pause"); return 0; }
时间: 2024-10-07 14:10:51