您的位置:首页 > 理论基础 > 数据结构算法

数据结构学习笔记--栈、队列

2018-03-30 10:26 330 查看
栈只允许在一端操作,队列只允许在一段插入,在另一端删除。栈和队列是一种特殊的线性结构(逻辑结构)。  逻辑结构:跟计算机没关系,不考虑如何保存到计算机当中。
  栈:一种可以实现“先进后出”的存储结构。(类似于只有一端开口的箱子)
    分类:静态栈:内核是数组

             动态栈:内核是链表(只能在头部插入和删除)

    算法:出栈、入栈

    栈只能在一端删除、插入,另一端不允许。

    静态分配的内存在栈里,动态分配的内存在堆里。

    队列:一种可以是实现“先进先出”的存储结构。只能在一端输入,另一端输出,不能对中间的元素插入、删除,只能对两端操作。
    分类:链式队列(基于链表)
静态队列(用数组实现、静态队列通常都必须是循环队列):
     1、静态队列为什么必须是循环队列?(使空间可再利用)

     2、循环队列需要几个参数来确定?(两个。2个参数在不同场合有不同的意义)1)初始化。front和rear的值都是0。2)队列非空。front代表队列的第一个元素,rear代表队列最后一个有效元素的下一个元素。3)队列空。front和rear的值相等,但不一定为0。

    3、入队伪算法演示:1)将值存入r所代表的位置;2)r=(r+1)%数组的长度

    4、出队伪算法演示:f=(f+1)%数组的长度 (对数组长度取余是为了能由尾部跳到首部)

    5、如何判断循环队列是否为空?front与rear值相等

    6、如何判断循环队列已满?

    两种方式:

    1、多增加一个表标识参数

    2、少用一个元素(如果有n个,只用n-1个)

    如果r和f的值紧挨着,则队列已满。

    if((r+1)%数组长度 == f) 已满;else 不满;

队列的具体应用:所有和时间有关的操作都与队列有关。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: