当前位置:   article > 正文

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

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

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
种出栈可能。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/515513
推荐阅读
相关标签
  

闽ICP备14008679号