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

栈只允许在一端操作,队列只允许在一段插入,在另一端删除。栈和队列是一种特殊的线性结构(逻辑结构)。  逻辑结构:跟计算机没关系,不考虑如何保存到计算机当中。

  栈:一种可以实现“先进后出”的存储结构。(类似于只有一端开口的箱子)

    分类:静态栈:内核是数组

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

    算法:出栈、入栈

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

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


    队列:一种可以是实现“先进先出”的存储结构。只能在一端输入,另一端输出,不能对中间的元素插入、删除,只能对两端操作。

    分类:链式队列(基于链表)

静态队列(用数组实现、静态队列通常都必须是循环队列):

     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 不满;

队列的具体应用:所有和时间有关的操作都与队列有关。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值