栈是一种只能后入先出的容器,因此只有通过top来访问栈顶元素
1、top()
代码示例:
#include <iostream>
#include <string>
#include<algorithm>
#include<bits/stdc++.h>
#include<stack>
#include<set>
#include <vector>
#include <map>
#include<queue>
using namespace std;
int main() {
stack<int>s;
for(int i=0;i<5;i++){
s.push(i);//由于4是最后一个入栈的,所以在栈顶
}
cout<<s.top();
return 0;
}
2、push()
将元素压入栈顶,代码与上述一致
3、top()
获得的栈顶元素(同上)
4、pop()
移除栈顶元素,若想访问栈下的元素,必须先移除栈顶的
代码示例;
#include <iostream>
#include <string>
#include<algorithm>
#include<bits/stdc++.h>
#include<stack>
#include<set>
#include <vector>
#include <map>
#include<queue>
using namespace std;
int main() {
stack<int>s;
for(int i=0;i<5;i++){
s.push(i);
}
for(int i=0;i<5;i++){
cout<<s.top();//输出栈顶元素
s.pop();//移除栈顶元素
}
return 0;
}
5、empty()
用来检测栈是否为空,若是空,返回的是true,不是空返回false
代码示例:
#include <iostream>
#include <string>
#include<algorithm>
#include<bits/stdc++.h>
#include<stack>
#include<set>
#include <vector>
#include <map>
#include<queue>
using namespace std;
int main() {
stack<int>s;
for(int i=0;i<5;i++){
s.push(i);
}
if(!s.empty()){
cout<<"bushikong"<<endl;
}
for(int i=0;i<5;i++){
cout<<s.top();
s.pop();
}
if(s.empty()){
cout<<endl<<"kongle";
}
return 0;
}
6、size()
用来返回栈中元素的个数
代码示例
#include <iostream>
#include <string>
#include<algorithm>
#include<bits/stdc++.h>
#include<stack>
#include<set>
#include <vector>
#include <map>
#include<queue>
using namespace std;
int main() {
stack<int>s;
for(int i=0;i<5;i++){
s.push(i);
}
cout<<s.size();
cout<<endl;
for(int i=0;i<5;i++){
cout<<s.top();
s.pop();
}
cout<<endl;
cout<<s.size();
return 0;
}
经常有一些表达式转换、括号匹配的题,需要用到栈,需要多刷题才能熟练掌握。