MinStack

来源:互联网 发布:熊猫书院骗局知乎 编辑:程序博客网 时间:2024/06/05 01:02
#ifndef HEAD_#pragma comment(linker, "/STACK:36777216")#include <algorithm>#include <bitset>#include <cassert>#include <cmath>#include <cstdio>#include <cstring>#include <ctime>#include <functional>#include <iomanip>#include <iostream>#include <list>#include <map>#include <queue>#include <set>#include <stack>#include <string>#include <vector>#define cst constusing namespace std;#endif // HEAD_#ifndef TYPEDEFtypedef long long llint;typedef double lf;typedef unsigned uint;typedef unsigned long long ullint;#endif // TYPEDEFtemplate<class ElemType> class MinStack {private:  stack<ElemType> data, minimum;public:  void push(ElemType v) {    data.push(v);    if (minimum.empty()) minimum.push(v);    else minimum.push(min(v, minimum.top()));  }  bool empty() {    return data.empty();  }  uint size() {    return data.size();  }  void pop() {    assert(!data.empty());    data.pop();    minimum.pop();  }  ElemType top() {    return data.top();  }  ElemType stackMin() {    return minimum.top();  }};int main() {  #ifndef ONLINE_JUDGE//  freopen("in.txt", "r", stdin);//  freopen("out.txt", "w", stdout);  #endif  MinStack< int > ms;  ms.push(11);  ms.push(120);  ms.push(7);  cout << "top  " << ms.top() << endl;  cout << "size " << ms.size() << endl;  ms.pop();  cout << "top  " << ms.top() << endl;  cout << "min  " << ms.stackMin() << endl;  return 0;}

0 0
原创粉丝点击