首页 > 代码库 > 【STL】栈stack

【STL】栈stack

栈stack

头文件与定义

 

#include<stack>

stack<long long>mystack;    //以下以mystack为例

 

用法

1.将元素a入栈:mystack.push(a);

2.将栈顶元素弹栈/出栈:mystack.pop();

3.判断栈是否为空:mystack.empty()

4.栈的长度:cout<<stack.size();

5.访问栈顶元素:cout<<stack.top();

 

注意事项

1.在出栈或者访问栈顶元素之前应该先判断栈是否为空(或者栈长度是否为0),否则会出错

2.定义中的<>内不要总是习惯性int。。适当long long

3.( mystack.empty() ) 是一个判断条件,外围一定要习惯性加上一层(),免得后面再改。

 

练习

http://wikioi.com/problem/3137/

http://wikioi.com/problem/3138/

http://wikioi.com/problem/3139/

三道模板

对应程序

//练习1#include<iostream>#include<stack> using namespace std;int n,i,type,a;int main(){     stack<int>st;     cin>>n;     for (i=1;i<=n;i++)     {        cin>>type;        if (type==1)         {            cin>>a;            st.push(a);        }        if (type==2) st.pop();     }     if (st.empty()) {cout<<"impossible!"<<endl;} else {cout<<st.top()<<endl;}}            
练习1
//练习2#include<iostream>#include<stack> using namespace std;int n,i,type,a;int main(){     stack<long long>st;     cin>>n;     for (i=1;i<=n;i++)     {        cin>>type;        if (type==1)         {            cin>>a;            st.push(a);        }        if (type==2)         {             if (!st.empty())              {                    st.pop();             }            else             {                    cout<<"impossible!"<<endl;                    return 0;             }        }     }     if (st.empty()) {cout<<"impossible!"<<endl;} else {cout<<st.top()<<endl;}     return 0;}
练习2
//练习3#include<iostream>#include<stack> using namespace std;int n,i,type,a;int main(){     stack<long long>st;     cin>>n;     for (i=1;i<=n;i++)     {        cin>>type;        if (type==1)         {            cin>>a;            st.push(a);        }        if (type==2)         {             if (!st.empty())              {                    st.pop();             }        }        if (type==3)        {            cout<<st.top()<<endl;        }     }     return 0;}
练习3

只是为了写STL。。所以不要在意代码的速度啊长度啊什么的。。学STL才是正道。。。