栈
栈
栈的抽象数据类型描述
栈(stack)具有一定操作限制(限定仅在表尾进行插入或删除)的线性表
只在一端(栈顶,top)进行插入和删除
- 插入:入栈,push
- 删除:出栈,pop
- 后进先出(先进后出):Last In First Out(LIFO)
出栈顺序 与 卡特兰数(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;
}