FIFO队列实现-------循环数组实现

本文介绍了FIFO(先进先出)队列的基本原理,并重点讲解了使用循环数组实现FIFO队列的方法。内容包括队列的插入和删除操作,以及循环数组在解决满队列问题上的应用。通过示例展示了如何使用循环数组实现队列的入队和出队过程。
摘要由CSDN通过智能技术生成

FIFO(First-in ,First-out)队列在日常生活中很常见。当我们买票时,我们实际上遵守FIFO原则处理事情。类似的,计算机系统中常用FIFO队列保存那些希望先来先得到服务的任务。

FIFO队列包含两个基本操作:插入(put)一个新的项,删除(get)一个最早插入的项。

下面介绍两种FIFO队列的两种主要的实现方式:循环数组实现方式和链表实现方式。

(1)循环数组实现方式:

           对于每一个队列数据结构,我们保留一个数组S,其最多存放的Nmax个元素,定义两个位置front和rear分别指向队列的头尾两端,此外我们用N来记录队列中实际存在的元素          的个数。

      对于一个元素item入队,我们让N和rear增1,然后置s[rear]=item;

      对于一个元素item入队,我们让N减1,让front增1.

      注意:这种实现有一个潜在的问题。假设数组的Nmax=10,经过10次入队后,队列似乎已经满了,因为此时rear=9.然而,队列中可能只存在小于9个的元素,因为          之前入队的操作可能伴随着出队的操作。例如我们将1,2,3,4,5,6,7,8,9,10一次入队,然后又进行2次出队操作,此时front指向数组元素S[2]处的位置,此时队列中只          有8个元素,这时rear仍然指向数组的最后一个元素S[Nmax-1]的位置,此时我们有没有办法继续进行入队操作呢?

     简单的解决方法是:只要front和rear到达数组的末尾,它就又绕回到开头,这种实现方式就是循环

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值