栈(stack)是C++标准模版库(STL,Standard Template Library)中的一种顺序式容器。基本的数据结构之一,特点是“先进后出”(FILO)。
如图:(图片来源于百度)
图片说明
一.用结构体创建一个栈:

#include<iostream>
using namespace std;
struct stack{
    int t;//栈顶top 
    void init(){ //栈的初始化
        t=0;
    }
    void push(int x){//进栈 
        a[++t] = x;
    }
    int top(){//栈顶
        return a[t];
    }
    void pop(){//出栈
        t--;
    }
    int empty(){//检测栈是否为空
        return t > 0 ? 0 : 1;
    }
};

二.直接使用栈
直接使用栈需要头文件:

#include<stack>//或者万能头文件#include<bits/stdc++.h>
using namespace std;

定义:

stack<数据类型> 栈名;

函数:

/ *
    s.push(n);//把n放到栈顶。
    s.top();//返回栈顶元素
    s.pop();//弹出栈顶元素
    s.size();//返回栈中元素的个数。
    s.empty();//检查栈是否为空(返回一个bool类型)
*/

三.代码

#include<iostream>
#include<stack>
using namespace std;
int main()
{
    stack<int> s;
    //栈的操作
    s.push(1);
    s.push(2);
    s.push(3);
    s.push(4);
    while(!s.empty()){
    cout<<s.top()<<endl;
    s.pop();
    }
    return 0;
}

注意:
栈需要用空间存储,如果深度太大,或者存进栈的数组太大,那么总数会超过系统为栈分配的空间,就会爆栈,即栈溢出(运行错误或段错误)。
解决办法有两种:
(1)在程序中调大系统的栈。依赖于系统和编译器。
(2)手工写栈。(如上面的结构体)

To be continued...