两个栈实现一个队列:
目前创新互联公司已为近1000家的企业提供了网站建设、域名、网站空间、网站托管、企业网站设计、沧州网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。
template<class T> class CQueue { public: void Push(const T& element) { stack1.push(element); } void Pop() { if (stack2.empty()) { while (!stack1.empty()) { stack2.push(stack1.top()); stack1.pop(); } } if (stack2.empty()) { cout<<"queue is empty"<<endl; assert(false); } stack2.pop(); } bool Empty() { if (stack1.empty() && stack2.empty()) return true; else return false; } T Front() { if (!stack2.empty()) { return stack2.top(); } else { while (!stack1.empty()) { stack2.push(stack1.top()); stack1.pop(); } if (stack2.empty()) { cout<<"queue is empty"<<endl; assert(false); } return stack2.top(); } } private: stack<T> stack1; stack<T> stack2; };
两个队列实现一个栈:
template<class T> class CStack { public: void Push(const T& element) { queue1.push(element); } void Pop() { if (queue1.empty()) { cout<<"stack is empty"<<endl; assert(false); } while (queue1.size() != 1) { queue2.push(queue1.front()); queue1.pop(); } queue1.pop(); while (!queue2.empty()) { queue1.push(queue2.front()); queue2.pop(); } } bool Empty() { if (queue1.empty()) return true; else return false; } T Top() { if (queue1.empty()) { cout<<"stack is empty"<<endl; assert(false); } return queue1.back(); } private: queue<T> queue1; queue<T> queue2; };
网站名称:面试题:用两个栈实现队列,用两个队列实现栈
本文URL:https://www.cdcxhl.com/article30/gihjpo.html
成都网站建设公司_创新互联,为您提供域名注册、全网营销推广、微信小程序、网页设计公司、网站改版、网站设计公司
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联