链栈
- 链表的头指针就是栈顶
- 不需要头结点
- 基本不存在栈满的情况
- 空栈相当于头指针指向空
- 插入和删除仅在栈顶执行
- 指针方向从a[n]指向a[1]
递归问题
条件:
- 能将一个问题转变成一个新问题 且新问题与原问题解法相同或类同 处理对象不同 但处理对象变化有规律
- 可以通过上述转化而使问题简化
- 必须有一个明确的递归出口 或称递归的边界
分治法一般形式
void p(参数表){
if(递归结束条件)可直接求解步骤;--------基本项
else p(较小的参数);------------归纳项
}
优点:结构清晰 程序易读
缺点:每次调用都要生成工作记录,保存状态信息,入栈;返回时要出栈,恢复状态信息。时间开销大。
解决方法①尾递归、单向递归->循环结构
②自用栈模拟系统的运行时栈