大话数据结构--第四章 栈与队列

  • 栈stack:是限定在表尾(栈顶top,LIFO)进行插入和删除操作的线性表
    • 栈的抽象数据类型push、pop
    • 栈的顺序存储结构(顺序栈)
      • 栈共享:应用于具有相同数据类型且栈空间相互之间有相反关系
    • 栈的链式存储结构(链栈)
      • 注意:top = null(空链栈);将栈顶指针和单链表头指针合二为一(无头结点)
    • 栈的应用:
      • 递归(斐波那契数列):直接或者间接调用自己的函数,且至少有一个限制条件,使递归停止
        • 递归和迭代的区别:
          • 迭代使用循环结构;迭代使用选择结构
          • 递归使代码简洁,更易理解
          • 大量的递归会建立函数的副本,耗费大量的时间和内存;迭代不需要
      • 四则运算表达式求值
        • 后缀(逆波兰)表示法、中缀表示法(标准四则运算表达式)
        • 中缀后缀:栈;后缀求值:栈

  • 队列queue:是允许在一端(队尾)进行插入操作,在另一端(对头)进行删除操作的线性表(FIFO)
    • 队列的抽象数据类型
    • 队列的顺序存储结构(循环队列)
      • 顺序存储结构的队列关键词:对头、队尾、front指针、rear指针(指向下一个)
      • 顺序存储结构的队列-->循环队列(假溢出)(rear可能会比front多几圈)
      • 判断队列空满:(满足(rear+1)%queuesize == front条件,队满)
        • 设置标志变量flag  其中front == rear,flag = 0 队空;front == rear,flag = 1队满
        • front == rear队空,当队满时保留一个元素空间
      • 计算队列长度:(rear-front+queuesize)%queuesize
    • 队列的链式存储结构(链队列)
      • 注意:与循环队列不同的是rear指针指向队尾

你可能感兴趣的:(大话数据结构总结)