首页 > 代码库 > 剑指offer系列源码-包含min函数的栈

剑指offer系列源码-包含min函数的栈

题目1522:包含min函数的栈
时间限制:1 秒内存限制:128 兆特殊判题:否提交:1495解决:476
题目描述:
定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数。
输入:
输入可能包含多个测试样例,输入以EOF结束。
对于每个测试案例,输入的第一行为一个整数n(1<=n<=1000000), n代表将要输入的操作的步骤数。
接下来有n行,每行开始有一个字母Ci。
Ci=’s’时,接下有一个数字k,代表将k压入栈。
Ci=’o’时,弹出栈顶元素。
输出:
对应每个测试案例中的每个操作,
若栈不为空,输出相应的栈中最小元素。否则,输出NULL。
样例输入:
7
s 3
s 4
s 2
s 1
o
o
s 0
样例输出:
3
3
2
1
2
3
0

#include<stdio.h>
#include<iostream>
#include<stack>
using namespace std;
int main(){
   int n;
    while(cin>>n){
        stack<int> s ;
        for(int i=0;i<n;i++){
            char ch;
            int num;
            cin>>ch;
            if(ch=='s'){
                cin>>num;
                if(s.empty()){
                    s.push(num);
                }else if(s.top()<=num){
                    s.push(s.top());
                }else {
                    s.push(num);
                }
                printf("%d\n",s.top());
            }else {
                if(s.empty()){
                    printf("NULL\n");
                }else{
                    if(!s.empty()) s.pop();
                    if(s.empty()){
                        printf("NULL\n");
                    }else{
                        printf("%d\n",s.top());
                    }
                }
            }
        }
    }
}
oj地址

剑指offer系列源码-包含min函数的栈