//用两个栈实现队列的功能 //假设有两个栈s1与s2,则s1保存刚刚入队的元素,若需出队且s2为空,则将s1所有元素压入s2(此时s2中元素顺序为元素入队顺序),然后取出s2栈顶即可,若s2非空(此时s2中元素为s1之前压入,其栈顶就是最早入队的元素),则直接取出s2的栈顶。 template<class T> class MyQueue { stack<T> s1,s2; public: MyQueue(){} int size() { return s1.size()+s2.size(); } bool empty() { if(size()==0)return true; else return false; } void push(T value) { s1.push(value); } T front() { if(!s2.empty()) { return s2.top(); } else { while(!s1.empty()) { s2.push(s1.top()); s1.pop(); } return s2.top(); } } void pop() { if(!s2.empty()) { s2.pop(); } else { while(!s1.empty()) { s2.push(s1.top()); s1.pop(); } s2.pop(); } } };
时间: 2024-12-09 12:07:33