栈的抽象数据类型描述

栈(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;
}
posted @ 2021-01-13 22:28  许君  阅读(55)  评论(0编辑  收藏  举报