码迷,mamicode.com
首页 > 其他好文 > 详细

实现栈最小元素的min函数

时间:2014-08-05 02:59:38      阅读:263      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   os   strong   io   数据   for   

 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     else
26     {
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                 else
67                 {
68                     cout<<mystack.min()<<endl;
69                 }
70                 break;
71             }
72         }   
73     }
74        return 1;
75 }
76 /**************************************************************
77     Problem: 1522
78     User: xuebintian
79     Language: C++
80     Result: Accepted
81     Time:140 ms
82     Memory:1524 kb
83 ****************************************************************/
题目描述:

定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数。

 

输入:

输入可能包含多个测试样例,输入以EOF结束。
对于每个测试案例,输入的第一行为一个整数n(1<=n<=1000000), n代表将要输入的操作的步骤数。
接下来有n行,每行开始有一个字母Ci。
Ci=’s’时,接下有一个数字k,代表将k压入栈。
Ci=’o’时,弹出栈顶元素。

 

输出:

对应每个测试案例中的每个操作,
若栈不为空,输出相应的栈中最小元素。否则,输出NULL。

实现栈最小元素的min函数,布布扣,bubuko.com

实现栈最小元素的min函数

标签:style   blog   color   os   strong   io   数据   for   

原文地址:http://www.cnblogs.com/churi/p/3891329.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!