• 栈与队列


    一、栈的定义

      栈的定义:栈是限定仅在表尾进行插入和删除的操作的线性表。

      允许插入和删除的一段称为栈顶,另一端称为栈底,不含任何数据元素的栈称为空栈。栈又称为后进先出的线性表,简称LIFO结构。

      栈元素具有线性关系,即前驱后继关系,只不过他是一种特殊的线性表。他的特殊之处就在于限制了这个线性表的插入和删除位置,它始终只在栈顶进行。这也就使得:栈底是固定的,最先进栈的只能在栈底。

      栈的插入操作,叫做进栈,也称压栈、入栈。

      栈的删除操作,叫做出栈,也有的叫做弹栈。

    二、栈的抽象数据类型

      因为栈也是一个线性表,所以,线性表的顺序存储和链式存储对于栈也同样适用。

    三、栈的顺序存储结构及实现

      1、栈的顺序存储结构

      

      2、进栈操作

      

      3、出栈操作

      

      4、栈的链式存储结构

        链栈的操作绝大多数都和单链表类似,只是在插入和删除上特殊一些。

      5、栈的作用

        栈的引入简化了程序设计的问题,划分了不同关注层次,使得思考范围缩小,更加聚焦于我们要解决的问题核心。反之,像数组等,因为要分散精力去考虑数组的下标增减等问题,反而掩盖了问题的本质。

      6、递归

        栈有一个很重要的作用是在程序设计语言中实现了递归。比如:斐波那契数列

        递归:把一个直接调用自己或通过调用语句间接调用自己的函数,称作递归函数。每个递归定义必须至少有一个条件,满足时递归不再进行,即不再引用自身而是返回值退出。

        递归与迭代区别:迭代使用的是循环结构,递归使用的是选择结构。递归能使程序的结构更清晰、更简洁、更容易让人理解,从而减少读懂代码的时间。但是大量的递归调用会建立函数的副本,会消耗大量的时间和内存。迭代则不需要反复调用函数和占用额外的内存。

    四、队列的定义

      队列是只允许在一端进行插入操作,而在另一端进行删除操作的线性表。队列是一种先进先出的线性表,简称FIFO。允许插入的一端称为队尾,允许删除的一端称为对头。

    五、队列的链式存储结构及实现

      

     六、总结

      栈和队列大部分操作和单链表类似,不再做详细介绍。

      

  • 相关阅读:
    集成学习方法
    nlp知识
    kaggle竞赛入门整理
    pandas知识点
    EM算法
    特征工程
    【clustering】之K-means && K-medoids
    sklearn学习笔记
    周总结十二
    《如何高效学习》读书笔记五
  • 原文地址:https://www.cnblogs.com/lichuankai/p/8655988.html
Copyright © 2020-2023  润新知