栈
栈
栈的抽象数据类型描述
栈(stack)具有一定操作限制(限定仅在表尾进行插入或删除)的线性表
只在一端(栈顶,top)进行插入和删除
- 插入:入栈,push
- 删除:出栈,pop
- 后进先出(先进后出):Last In First Out(LIFO)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-96EWrlQa-1610547982012)(C:\Users\happy\AppData\Roaming\Typora\typora-user-images\image-20210112123757533.png)]]()
出栈顺序 与 卡特兰数(Catalan)的关系
#谨遵后进先出(先进后出):Last In First Out(LIFO)原则
# 详细讲解见转载 bolg :https://blog.csdn.net/doc_sgl/article/details/8880468
问题描述:给定一个以字符串形式表示的入栈序列,请求出一共有多少种可能的出栈顺序?
入栈序列为:1 2 3
则,出栈序列为:123、132、213、231、321,共五种。
栈的顺序存储实现
通常由一个一维数组和一个记录栈顶元素位置的变量组成
#include <bits/stdc.h>
using namespace std;
const int N = 2e4+50;
int sta[N],head = -1;
void push(int x)//入栈的过程
{
sta[++head] = x;
}
void pop//出栈的过程
{
if(head != -1)
--head;
}
int top()//取对头
{
return sta[head];
}
int main()
{
//调用函数即可;
return 0;
}

![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-96EWrlQa-1610547982012)(C:\Users\happy\AppData\Roaming\Typora\typora-user-images\image-20210112123757533.png)]](https://img-blog.csdnimg.cn/20210113222736386.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzUxMzQ0MTcy,size_16,color_FFFFFF,t_70)
浙公网安备 33010602011771号