• 青岛大学数据结构与算法——第3章


    一 概述

    • 栈和队列的定义特点
    • 案例引入
    • 栈的表示和操作
    • 栈和递归
    • 队列的表示和操作的实现

    栈和队列的定义特点

    2.1 共同点

    • 插入和删除在表的端点进行
    • 线性表

    2.2 栈stack

    • 后进先出(LIFO结构(Last In First Out))
    • 表尾:插入、删除
    • 栈顶/栈尾:表尾-栈顶(Top)、表头-栈底(Base)
    • 操作:入栈(Push)、出栈(Pop)
    • 示例:3个元素abc,出栈顺序由几种

    2.3 队列

    • 先进先出(First In First Out-FIFO)-排队
    • 操作:表尾插入、表头删除
    • 实现方式:入队、出队

    三 案例引入

    • 栈:进制转换-十进制159转换8进制、括号匹配的检验-([]())
    • 队列:表达式的求值-#3*(7-2)#、舞伴问题-舞会,男士/女士各一对

    四 栈的表示和操作

    4.1 栈的抽象数据类型定义ADT Stack

    4.2 表示和实现

    • 初始化InitStack
    • 销毁栈DestoryStack
    • 判空StackEmpty
    • 栈的长度StackLength
    • 栈顶元素GetTop
    • 栈置空ClearStack
    • 入栈Push
    • 出栈Pop

    五 栈和递归

    • 什么是递归
    • 求解问题:迷宫问题、汉诺塔问题
    • 递归方法的情况:数学函数、递归特性的数据结构、递归求解
    • 分治法求解:分治法一般形式
    • 函数调用过程:调用前,系统完成(3)、调用后,系统完成(3)
    • 示例:多函数嵌套、n!求解

    六 队列的表示和操作的实现

    • 相关术语:队列、队尾、队头、FIFO
    • 队列的抽象数据类型定义ADT Queue
    • 基本操作:构造空队列InitQueue、队列销毁DestoryQueue、队列清空ClearQueue、队列的元素个数QueueLength、队头元素GetHead、队尾插入EnQueue、删除队头DeQueue
    • 解决上溢的方法:引入循环队列
    • 循环队列判满方法:少用一个元素空间

    七 图示

  • 相关阅读:
    Perl6中的垃圾收集
    在win10命令行(cmd)中添加临时环境变量
    【13】基础知识:React路由
    为什么我会性格懦弱?如何改变懦弱的性格?
    冲刺学习-MySQL-基础
    Telnet弱口令渗透测试
    JDK对String操作优化
    ssh免密快捷连接简单配置实现
    c语言上机作业:迭代法求平方根
    Oracle 19c OCP的1Z0-082-CHN、1Z0-083-CHN和1Z0-082、1Z0-083有什么不同
  • 原文地址:https://blog.csdn.net/Calvin_zhou/article/details/126951054