栈和队列

1、递归和栈的关系

C允许一个函数调用其本身,这种调用过程被称作递归(recursion)。
最简单的递归形式是把递归调用语句放在函数结尾即恰在return语句之前。这种形式被称作尾递归或者结尾递归,因为递归调用出现在函数尾部。由于为递归的作用相当于一条循环语句,所以它是最简单的递归形式。
递归中必须包含可以终止递归调用的语句!
递归的有点在于为某些编程问题提供了最简单的方法,而缺点是一些递归算法会很快耗尽计算机的内存资源。同时,使用递归的程序难于阅读和维护。

所以消除递归不一定得用到栈,有时候用循环或者队列也可以解决

2、尾指针的循环链表表示队列,则入队和出队算法的时间复杂度均为O(1)

如果是表示的栈,出栈是需要遍历到尾结点的前一个,所以时间复杂度为O(n),入栈则是O(1)

3、卡特兰数--n个不同元素进栈,出渣序列个数:

1/(n+1)  *Cn2n

原文地址:https://www.cnblogs.com/zyqx/p/9414657.html