STACK
栈(stack)又名堆栈,它是一种运算受限的线性表。其限制是仅允许在表的一端进行插入和删除运算。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。
栈可用数组模拟:如图所示
在STL中栈一共就5个常用操作函数(top()、push()、pop()、 size()、empty() )
stack 头文件是 :#include<stack>
还要加: using namespace std;
stack<int>S-----------------------------栈定义
S.top();-----------------------------------返回栈顶数据
S.push(elem);--------------------------在栈顶增加elem数据
S.pop();-----------------------------------弹出栈顶数据
S.empty()-------------------------------判断栈是否为空
S.size()-----------------------------------返回栈中数据的个数
代码示例 :
#include<cstdio>
#include<stack> //栈头文件
using namespace std; //要加这一句
int main()
{
stack<int>S; //栈定义 一个整形的栈
if(S.empty()) // 判断栈是否为空
printf("空栈\n");
S.push(1); //在栈顶增加elem数据
S.push(2);
S.push(3);
int n=S.top(); //返回栈顶数据
printf("栈顶数据: %d\n",n);
if(S.empty()) // 判断栈是否为空
printf("空栈\n");
else
printf("非空栈\n");
int len=S.size(); //返回栈中数据的个数
printf("栈长度: %d\n",len);
S.pop(); //弹出(删除)栈顶数据
n=S.top(); //返回栈顶数据
printf("栈顶数据: %d\n",n);
S.pop(); //弹出(删除)栈顶数据
n=S.top(); //返回栈顶数据
printf("栈顶数据: %d\n",n);
return 0;
}