对队列的简单介绍

队列的定义
队列是只允许在一端进行插入操作,另一端进行删除操作的线性表。
队列是一种 “先进先出” 的线性表,简称FIFO。允许插入的一端是队尾,允许删除的一端是队头。
在这里插入图片描述

1.循环队列–顺序存储
底层还是用数组来实现,但是需要两个指针,一个是队头指针,一个是队尾指针,当队头和队尾指向同一个位置时,表示当前的队列是空队列,如果有数据插入的话,可以直接向后移动队尾指针,如果有数据要删除的话,可以直接移动队头指针。在具体结构中还存放一个size,表示当前队列中的个数。下面说当队头指针和队尾指针相遇时就是队列是空,其实不严谨,只有当size为0的时候队列为空,因为如果队列满了,队头和队尾也会相遇,这两种情况下队头指针和队尾指针会指向同一块地址。
在这里插入图片描述

如果队尾指针移动超过n了怎么办,很简单如果超过数组范围了,我们就指向开头,如果开头和头指针相遇,size == n,说明空间不够了,那么我们就需要开辟一个更大的空间,然后将数据重新拷贝到新空间中,释放旧空间,再去移动队尾指针。
在这里插入图片描述

顺序存储还是会出现空间不足,开辟新空间后,移动数据的过程,那么我们来分析下链式存储。

2.队列的链式存储
在这里插入图片描述

链式存储,需要的话就去开辟新空间,不需要的话就释放删除的节点空间,按需索取,不用担心数组越界的问题,只有在我们申请不到新空间的时候才会插入失败。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值