您的位置:首页 > 其它

题目1522:包含min函数的栈

2016-04-19 17:21 435 查看
两个栈:

(1)一个栈就是正常的对数据进栈、出栈。

(2)另一个每次入栈时判断当前值与栈顶值的大小。如果当前值小,那么当前值入栈,否则栈顶对应的值入栈。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <limits.h>
#include <stack>
using namespace std;

int main(){
int n,num,i,len=0;
char opt[2];
stack <int> s;
stack <int> s_min;          //最小的数
while(scanf("%d",&n)!=EOF){
len = 0;
for(i=0;i<n;i++){
scanf("%s",opt);
if(opt[0]=='s'){    //输入为s时,此时入栈
scanf("%d",&num);
if(s_min.empty()||s_min.top()>num){
s.push(num);
s_min.push(num);
}else{
s.push(num);
s_min.push(s_min.top() );
}
}
else{              //输入为o时,此时出栈
if(!s.empty()){
s.pop();
s_min.pop();
}
}

if(!s_min.empty()){
printf("%d\n",s_min.top() );
}
else{
printf("NULL\n");
}
}
}

//system("pause");
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: