目录
一:栈的介绍
二:栈的函数讲解
1:栈的定义
2:栈的插入
3:站的顶部元素
4:栈的弹出
5:是否为空
三:例题和代码
1:题目
2:代码
栈是一种数据结构,主要特点是先进后出,就是说先进来的元素会被后面进来的元素压在底下,只有等上面的元素都出去了,自己才可以出去。下面有一幅示意图:(虽然画得不好)
如图,如果4不出栈,那么后面的三个元素都不能出栈,根据推理,可以得出入栈顺序为1,2,3,4,最先进去的1如果上面还有数据压着,就出不来了,所以是先进后出。
首先是stack,他和int差不多,只不过一个表示定义栈,一个表示定义整数。后面跟上一对<>,中间写这个栈的类型,例如:<int>,最后跟上栈的名字,如:s。下面是定义栈的示例
stack<int>s;//表示定义一个类型为int名字为s的栈
插入的函数是push,例如插入3:
s.push(3)
注:插入都是从栈顶插入的。
顶部元素是top,例如输出栈顶元素:
cout<<s.top();
注:用这个函数是,栈不能为空,否则,自己去试试吧……
弹出的函数是pop,且弹出的是顶部元素,示例:
s.pop();
注:和top一样,要先确保栈不为空。
函数为empty,为空则返回1,反之返回0,示例:
if(s.empty()){ cout<<"栈为空"; } else{ cout<<"栈不为空"; }
2016: 【入门】栈(模板题)
时间限制 : 1.000 sec 内存限制 : 128 MB
题目描述
实现一个栈,栈初始为空,支持四种操作:
现在要对栈进行 MM 个操作,其中的每个操作 33 和操作 44 都要输出相应的结果。
输入
第一行包含整数 MM,表示操作次数。
接下来 MM 行,每行包含一个操作命令,操作命令为 push x,pop,empty,query 中的一种。
输出
对于每个 empty 和 query 操作都要输出一个查询结果,每个结果占一行。
其中,empty 操作的查询结果为 YES 或 NO,query 操作的查询结果为一个整数,表示栈顶元素的值。
样例输入
10 push 5 query push 6 pop query pop empty push 4 query empty
样例输出
5 5 YES 4 NO
提示
1≤M≤100000,
1≤x≤10^9
所有操作保证合法。
#include <bits/stdc++.h> using namespace std; stack<int>s; int main(){ int n; cin>>n; for(int i=1;i<=n;i++){ string t; cin>>t; if(t=="push"){ int n; cin>>n; s.push(n); } else if(t=="empty") { if(s.empty()) cout<<"YES"<<endl; else cout<<"NO"<<endl; } else if(t=="pop") s.pop(); else cout<<s.top()<<endl; } return 0; }