设计包含min函数的栈
来源:互联网 发布:真小人 伪君子知乎 编辑:程序博客网 时间:2024/06/02 05:06
定义栈的数据结构,要求添加一个min函数,能够得到栈的最小元素,要求函数min,push及pop的时间复杂度都是O(1)
栈的数据结构包含两个普通栈,一个栈存数据,另一个栈存最小值(或最小值的位置,如果用stl里的栈,则不能存最小值的位置,因为stl里的stack不支持下标索引访问)。
- #include <iostream>
- #include <stack>
- #include <assert.h>
- using namespace std;
- template <typename T>
- class StackWithMin
- {
- private:
- stack<T> datastack;
- stack<T> minstack;//存最小值而不是最小值的下标
- public:
- void push(const T &data)
- {
- datastack.push(data);
- if(0==minstack.size())
- minstack.push(data);
- else if(minstack.top()>data)
- minstack.push(data);
- else
- minstack.push(minstack.top());
- }
- void pop()
- {
- assert(datastack.size()>0);
- assert(minstack.size()>0);
- datastack.pop();
- minstack.pop();
- }
- int& min()
- {
- return minstack.top();
- }
- };
- void main()
- {
- StackWithMin<int> s;
- s.push(10);
- s.push(7);
- s.push(3);
- s.push(3);
- s.push(8);
- s.push(5);
- s.push(2);
- s.push(6);
- for(int i=0; i<8; i++)
- {
- cout<<s.min()<<endl;
- s.pop();
- }
- }
- 设计包含min函数的栈
- 设计包含min函数的栈
- 转载 设计包含min函数的栈
- 设计包含min函数的栈
- 设计包含min函数的栈
- 设计包含 min 函数的栈
- 设计包含min函数的栈
- 2.设计包含min函数的栈
- 2、设计包含min 函数的栈
- 设计包含min函数的栈---Algorithms
- 设计包含min函数的栈
- 设计包含min函数的栈
- 设计包含min函数的栈
- 2.设计包含min函数的栈
- 设计包含min函数的栈
- 设计包含min函数的栈
- 设计包含min函数的栈
- 设计包含min函数的栈
- 5.把hbm转化为DDL有两种方式:总结
- Android的Tab控件(二)
- webkit学习笔记1---webcore简单执行流程
- 我的第三个Android应用软件——《新概念3》
- Android定制属于你自己的导航栏
- 设计包含min函数的栈
- 大型网站架构演变和知识体系
- 数理逻辑:谓词演算(目录)
- poj (3468)线段树lazy操作
- XCLNetSearch1.0(ASP.NET通用查询服务器控件)
- 和菜鸟一起学linux总线驱动之初识USB
- 编程之美2.5寻找最大的K个数
- JTextArea的多行整体左缩进与右缩进
- 数理逻辑:谓词演算(1)谓词演算公式