博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
双栈队列实现快速获取队列最大值最小值
阅读量:6148 次
发布时间:2019-06-21

本文共 1879 字,大约阅读时间需要 6 分钟。

1 思路:

自己实现一个栈,其中成员为标准库中的栈,一个存放全部的元素,一个存放最小元素,一个存放最大元素。

使用自己实现的栈来实现一个求最大值最小值的队列,其中包含两个成员,一个作为出队的栈,一个作为入队的栈。

 

2 C++实现代码:

#include
#include
#include
using namespace std;template
class minmaxStack{public: bool empty() { return st.empty(); } size_t size() { return st.size(); } void push(int x) { if(minStack.empty()||x
maxStack.top()) maxStack.push(x); st.push(x); } void pop() { if(st.empty()) return; if(st.top()==minStack.top()) minStack.pop(); if(st.top()==maxStack.top()) maxStack.pop(); st.pop(); } int getMin() { if(st.empty()) return -1; return minStack.top(); } int getMax() { if(st.empty()) return -1; return maxStack.top(); } int top() { return st.top(); }private: stack
st; stack
minStack; stack
maxStack;};template
class myqueue{public: bool empty() { return in.empty()&&out.empty(); } size_t size() { return in.size()+out.size(); } int getMax() { if(in.empty()&&out.empty()) return -1; if(in.empty()) return out.getMax(); if(out.empty()) return in.getMax(); return max(in.getMax(),out.getMax()); } int getMin() { if(in.empty()&&out.empty()) return -1; if(in.empty()) return out.getMin(); if(out.empty()) return in.getMin(); return min(in.getMin(),out.getMin()); } void push(int x) { in.push(x); } void pop() { if(in.empty()&&out.empty()) return; if(out.empty()) { while(!in.empty()) { out.push(in.top()); in.pop(); } } out.pop(); }private: minmaxStack
in; minmaxStack
out;};int main(){ myqueue
q; for (int i = 0; i < 15; i++) { int index=rand()%100; cout<
<<' '; q.push(index); } cout<
<

 

转载地址:http://kxqya.baihongyu.com/

你可能感兴趣的文章
任务调度(一)——jdk自带的Timer
查看>>
UIKit框架(15)PCH头文件
查看>>
整理看到的好的文档
查看>>
Linux磁盘管理和文件系统管理
查看>>
linux运维人员的成功面试总结案例分享
查看>>
Windows DHCP Server基于MAC地址过滤客户端请求实现IP地址的分配
查看>>
命令查询每个文件文件数
查看>>
《跟阿铭学Linux》第8章 文档的压缩与打包:课后习题与答案
查看>>
RAC表决磁盘管理和维护
查看>>
Apache通过mod_php5支持PHP
查看>>
发布一个TCP 吞吐性能测试小工具
查看>>
java学习:jdbc连接示例
查看>>
PHP执行批量mysql语句
查看>>
Extjs4.1.x 框架搭建 采用Application动态按需加载MVC各模块
查看>>
Silverlight 如何手动打包xap
查看>>
建筑电气暖通给排水协作流程
查看>>
JavaScript面向对象编程深入分析(2)
查看>>
linux 编码转换
查看>>
POJ-2287 Tian Ji -- The Horse Racing 贪心规则在动态规划中的应用 Or 纯贪心
查看>>
Windows8/Silverlight/WPF/WP7/HTML5周学习导读(1月7日-1月14日)
查看>>