栈(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...

京公网安备 11010502036488号