首页 > 代码库 > 实现栈最小元素的min函数
实现栈最小元素的min函数
1 #include<iostream> 2 #include<stack> 3 using namespace std; 4 class min_stack 5 { 6 public: 7 void push(int); 8 void pop(); 9 int min();10 int size()11 {12 return data.size();13 }14 private:15 stack<int> data;16 stack<int> min_data;17 };18 void min_stack::push(int value)19 {20 data.push(value);21 if (min_data.size()==0 || min_data.top() > value)22 { 23 min_data.push(value);24 }25 else26 {27 min_data.push(min_data.top());28 }29 }30 void min_stack::pop()31 {32 if (data.size()>0)33 {34 min_data.pop();35 data.pop();36 }37 }38 int min_stack::min()39 {40 return min_data.top();41 }42 43 int main(int argc, char **argv)44 {45 int n,m;46 char ci;47 while(cin>>n)48 {49 min_stack mystack;50 for (int i=0; i<n; i++)51 {52 cin>>ci;53 switch (ci)54 {55 case ‘s‘:56 cin>>m;57 mystack.push(m);58 cout<<mystack.min()<<endl;59 break;60 case ‘o‘:61 mystack.pop();62 if (mystack.size()==0)63 {64 cout<<"NULL"<<endl;65 }66 else67 {68 cout<<mystack.min()<<endl;69 }70 break;71 }72 } 73 }74 return 1;75 }76 /**************************************************************77 Problem: 152278 User: xuebintian79 Language: C++80 Result: Accepted81 Time:140 ms82 Memory:1524 kb83 ****************************************************************/
- 题目描述:
定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数。
- 输入:
输入可能包含多个测试样例,输入以EOF结束。
对于每个测试案例,输入的第一行为一个整数n(1<=n<=1000000), n代表将要输入的操作的步骤数。
接下来有n行,每行开始有一个字母Ci。
Ci=’s’时,接下有一个数字k,代表将k压入栈。
Ci=’o’时,弹出栈顶元素。
- 输出:
对应每个测试案例中的每个操作,
若栈不为空,输出相应的栈中最小元素。否则,输出NULL。
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。