学过数据结构的程序猿应该都清楚栈是一种先入后出,后入先出(LIFO)的表即插入和删除都只能在一个位置上进行,即栈顶位置对栈的基本操作有Push(入栈)和Pop(出栈)。在一般软件研发的笔试中就会经常遇到关于入栈次序一定时,出栈次序有哪些共有几种?
其实此处只要了解一下卡特兰数的算法结构,参见:
由卡特兰数的思想可知若有n个元素顺序入栈,则对应的出栈次序共有f(n)=f(0)f(n-1)+f(1)f(n-2)+……+f(n-1)f(0)
如果说入栈元素次序是abc则由递推公式可得出栈次序共有5种。出栈顺序分别如下: