【数据结构】三、栈和队列:1.栈的基础(从数据结构三要素讨论:逻辑结构、物理结构(存储结构)、数据运算(基本操作))

本文介绍了栈这种只允许在一端进行插入或删除的线性表数据结构,探讨了逻辑结构、栈顶栈底概念,以及顺序栈和链式存储的物理实现。重点讲解了基本操作如初始化、销毁、入栈、出栈等,并提到了卡特兰数在特定问题中的应用,如确定5个元素的合法出栈顺序。
摘要由CSDN通过智能技术生成

栈Stack

逻辑结构

栈(Stack)是只允许在一端进行插入或删除操作的线性表。

重要术语:栈顶(现在能放入的一段),栈底(最早放入的元素的一段),空栈。

  • 特点后进先出(last in first out, LIFO)

逻辑结构:与普通线性表相同

数据的运算:插入、删除操作有区别

物理(存储)结构

  1. 顺序栈(顺序存储)
    • 单项栈
    • 共享栈
  2. 链栈(链式存储)

基本操作

InitStack(&S):初始化栈。构造一个空栈S,分配内存空间。

DestroyStack(&L):销毁栈。销毁并释放栈 S 所占用的内存空间。

Push(&S,x):插入,进栈。若栈S未满,则将x加入使之成为新栈顶

Pop(&S,&x):删除,出栈。若栈S非空,则弹出栈顶元素,并用x返回。

GetTop(S,&x):读取栈顶元素。若栈S非空,则用x返回线顶元素。

其他常用操作:

StackEmpty(S):断一个栈S是否为。若S为空,则返回true,否则返回false。

常考题型

进栈顺序:a->b->c->d->e

有哪些合法的出栈顺序?

全部进入后出栈:e->d->c->b->a(倒序)

进出栈穿插进行:

a->b->c->d->e(进一个出一个)

卡特兰(Catalan)数:n个不同元素进栈,出栈元素不同排列的个数为
1 n + 1 C 2 n n \frac 1{n+1}C_{2n}^n n+11C2nn
。上述公式称为卡特兰(Catalan)数,可采用数学归纳法证明(不要求掌握)。

所以,abcde 5个元素,有
1 5 + 1 C 10 5 = 1 6 ∗ 10 ∗ 9 ∗ 8 ∗ 7 ∗ 6 5 ∗ 4 ∗ 3 ∗ 2 ∗ 1 = 42 \frac 1{5+1}C_{10}^5=\frac1{6}*\frac{10*9*8*7*6}{5*4*3*2*1}=42 5+11C105=6154321109876=42
种出栈可能。

  • 11
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值