文章目录
前言:
栈(stack)是限定仅在表尾进行插入和删除操作的线性表。 栈中允许插入和删除的一端称为栈顶(top),另一端称为栈底(bottom)。 不含任何数据元素的栈称为空栈。 栈中元素的个数称为栈的高度或长度。将元素插入到栈中的操作称为入栈(或进栈)操作,元素入栈后就变成新的栈顶。 将元素从栈中删除的操作称为出栈(或退栈)操作,出栈时被删除的总是原来的栈顶元素 。
栈的基本运算主要有以下几种:
- 入栈 Push(x),将元素x 插入到栈顶;
- 出栈 Pop(),删除栈顶元素;
- 取栈顶元素 Top(),返回栈顶元素,栈顶元素并不出栈;
- 判栈空 Empty(),判别栈是否为空。
创建Stack对象:
头文件:#include < stack >
template <class T, class Container = deque > class stack;
std::stack<int> mystack; //创建空的栈
std::stack <int> mystack1(mystack)//拷贝构造
Stack成员函数:
size( ) :返回栈中元素个数
//size_type size()
mystack.size()
top( ) :返回栈顶的元素
//value_type &top() 返回栈顶元素的引用
mystack.pop()
pop( ) :从栈中取出并删除元素
//void pop();
while(!mystack.empty())
{
mystack.pop(); //全部出栈
}
push(e) :向栈中添加元素e
mystack.push(10);
empty( ) :栈为空时返回true
while (!mystack.empty())
{
sum += mystack.top();
mystack.pop();
}
栈的应用:
- 数制转换
- 括号匹配的检验
- 行编辑程序
- 迷宫求解
- 表达式求值
- 栈与递归的实现
- 二叉树
https://wenku.baidu.com/view/80a6b1777275a417866fb84ae45c3b3567ecddbb.html