原文:循环队列的基本算法

一 介绍 正是因为队列从队头删除,从队尾添加的特点,所以在使用数组来表现队列时,元素的位置移动采用下标也即出队front 或者入队rear 的方式实现,这里会体现出一个局限性,资源空间的浪费。怎么理解呢 草图所示: 图示解释: 一个数组队列是满的,arr a ,arr a ,arr a ,arr a , 此时再将a 入队列肯定是失败的。那么可以依次将a ,a 出队列,此时可以看到arr ,arr ...

2019-10-18 18:34 0 779 推荐指数:

查看详情

【小白学算法】4. 循环队列

在上一章中,使用了数组模拟了队列。但是留下的问题是,把数据取完后,再往里加数据就不行了。 一、假溢出 这是因为数组的末尾已经被占用了,入队会继续在数组后面增加,于是产生数组越界。 但是实际上,数组里是有空闲位置的,这种也可以叫“假溢出”。 为了解决“假溢出”的问题,于是乎有了循环队列 ...

Sun Mar 14 07:38:00 CST 2021 0 261
循环队列

循环队列类似栈,但是有两个口,一个专门用来入队,一个专门用来出队。由于入队出队不在一个端口,因此如果不适用循环队列,随着队列的使用,存储空间马上就被耗光了。在循环队列中,一个主要的知识点,就是如何判断队列为空,或者队列满。 这里主要有两个方法: 1 设置一个标记位,初始时,队列为空,我们设置 ...

Mon Jan 27 23:39:00 CST 2014 0 3114
循环队列

循环队列 当用顺序结构实现队列时如图所示:可以用一个数组代表队列空间,队列为空时 rear和front都是指向数组第一个元素。 从队尾插入的时候可以先将队尾指向的数组赋值,再将队尾指针+1 从对头弹出元素则是先给取出元素值再将队头指针+1 但如果这么做,就会遇到一个棘手的问题,那就是队头 ...

Sun Oct 06 19:23:00 CST 2019 0 386
循环队列

和栈相反,队列是FIFO表,先进先出。故名思议,和排队打饭一样,先入队的先打完出去,而且只能从队列的尾端加入(插队的滚粗啊。。)。用数组实现队列的话,循环队列是一般是必须的。我们会用2个下标head and tail来标记队头和队尾的位置,如果有人出队的话,head就会+1,入队tail+1 ...

Tue Jan 10 21:51:00 CST 2012 4 3952
循环队列

一.顺序队列的改进 队列元素的出列是在队头,即下标为0的位置,那也就意味着,队列中的所有元素都得向前移动,以保证队列的队头(也就是下标为0的位置)不为空,此时的时间复杂度为0(n)。 可有时想想,为什么出队列时一定要全部移动呢,如果不去限制队列的元素必须存储在数组的前n个单元这一条件,出队 ...

Tue Mar 20 21:01:00 CST 2018 0 4271
队列循环队列

队列 队列的类型定义 基本概念 只允许在一端插入数据操作,在另一端进行删除数据操作的特殊线性表;进行插入操作的一端称为队尾(入队列),进行删除操作的一端称为队头(出队列);队列具有先进先出(FIFO)的特性。 循环队列 为了改变假溢出所以使用循环队列 顺序表示 队列顺序存储结构 ...

Sat Aug 28 18:57:00 CST 2021 0 166
顺序队列循环队列

概述 队列(queue)是一种只允许在一端进行插入操作,而在另一端进行删除操作的线性表。 队列是一种先进先出(First In First Out)的线性表,简称FIFO。 允许插入的一端称为队尾,允许删除的一端称为队头。 因为已经限制了插入和删除的位置,所以对于队列,插入和删除时只需要 ...

Sun Jun 03 00:11:00 CST 2018 0 4476
队列循环队列和链队)

顺序队列一般实现为循环队列,因为普通的队列可能产生“假溢出”。 循环队列的两个状态: 1.队空 2.队满 (注意,循环队列必须损失一个存储空间,用来区分队空和堆满,如果队列中的所有空间对被占满,那么队空和队满的状态都是qu.front == qu.rear,导致 ...

Wed Sep 26 23:31:00 CST 2018 0 1237
 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM