栈与队列错题及重点

概念部分

  • 栈和队列具有相同的逻辑结构,这tm别忘啊,逻辑结构就线性和非线性的,栈和队列都是线性的
  • 只有表头结点指针而没有表尾指针的单向循环链表最不适合作为链栈
    • 比如在出栈的时候,即删除第一个结点,删是好删,但是最后一个结点的next指到新的第一个结点时,得遍历整个链表

栈与队列的应用

  • 用到栈的操作
    • 递归
    • 进制转换
    • 迷宫求解
    • 括号匹配
  • 用到队列的操作
    • 缓冲区
    • 页面替换算法
  • 调用函数时,系统会为调用者构造一个由参数表和返回地址组成的活动记录,并将记录压入系统提供的栈中,若被调用的函数有局部变量,也要压入栈中
  • 栈和队列都是操作受限的线性表,但是只有队列允许在两端操作,栈只能在一端操作
  • 递归调用函数时,在系统栈中保存的函数信息需要满足先进后出的特点,
int s(int n)
{
    return (n<=0)?0:s(n-1)+n;
}
int main()
{
    cout<<S(1);
}
main()->s(1)->s(0)