栈和队列遗漏知识点补充!

看了考研的数据结构书,发现之前有一些关于栈和队列的遗漏的知识点,现在补充一下。

1、栈的数学性质-卡特兰数

当n个元素以某种顺序进栈,并且可以在任意时刻出栈时,所获得的元素排列的树木N恰好满足Catalan()的计算,即N=C(n,2n)/(n+1)
有关卡特兰数的概念,可以参考之前我整理过的一篇文章:http://www.jianshu.com/p/dfb1d00bcf5e

2、循环队列

循环队列中,队首指向第一个元素的前一个位置,队尾指向最后一个元素的位置。
队空的条件:rear==front
队满的条件:(rear +1)% (maxSize)==front

3、共享栈

相比于普通的顺序栈,共享栈主要是为了提高内存的利用率和减少溢出的可能性而设计的。当两个栈共享共享一片连续的内存空间时,应将两栈的栈底分别设在这片内存空间的两端,这样当两个栈的栈顶在栈空间的某一位置相遇时,才产生上溢。

4、双端队列

双端队列是一种插入和删除操作在两端均可进行的线性表。可以把双端队列看成栈底连在一起的两个栈,它们与两个栈共享存储空间的共享栈不同之处是,两个栈的栈顶指针是向两端延伸的。由于双端队列允许在两端插入和删除元素,所以需要设立两个指针:end1和end2,分别指向双端队列中的两端的元素。

允许在一端进行插入和删除,另一端只允许删除的双端队列成为输入受限的双端队列,而允许在一端进行插入和删除,另一端只允许插入的双端队列成为输出受限的双端队列。

5、栈的应用-后缀表达式

栈的一个很重要的应用就是后缀表达式,有关后缀表达式的如何写参照我之前的一个博文:http://www.jianshu.com/p/8b38f61693b9。
之前以为只有加减乘除可以出现,其实关系运算符和逻辑运算符也可以出现的,这里要注意她们的优先级,关系运算符的优先级是要高于逻辑运算符的。

你可能感兴趣的:(栈和队列遗漏知识点补充!)