精华内容
下载资源
问答
  • 2020-11-19 22:52:02

    少一个存储位置的
    队列为空时:rear= =front
    队列满时:(rear+1)%maxSize= =front

    不少一个存储位置时:加一个标志flag或者计数的count
    入队时flag=true
    出队时flag=false
    队满:rear= =front&flag
    队空:rear= =front&!flag


    开始时count=0
    入队时:count++
    出队是:count–
    队满:rear ==front &&count=maxsize
    队空:rear ==front&&count=0;

    更多相关内容
  • 循环队列判断队列空和满的3种方法

    万次阅读 多人点赞 2020-02-14 19:32:18
      一.少用一个存储位置   第一种情况: ...比如下图有下标了,当队列满时,显然条件就不能判断了,就要用到另一种判断。   第二种情况: 当队列为时条件:rear == front 当队列满时条件为:(rear+1)...

    一.少用一个存储位置


    第一种情况:
    在这里插入图片描述
    当队列为空时条件:rear == front

    当队列满时条件为:rear+1 == front
      
      上述方式对于上述图是适用的,但如果出现了有下标标识,上述判断条件就不适用了。比如下图有下标了,当队列满时,显然条件就不能判断了,就要用到另一种判断。

    第二种情况:
    在这里插入图片描述当队列为空时条件:rear == front

    当队列满时条件为:(rear+1)% maxsize == front


    二.设置一个标记位


    设置初始标记: boolean flag=false

    当入队列时,让rear往后移动,让flag=true
    当出队列时,让front往后移动,让flag=false

    当队列为空时: rear == front && flag==false
    当队列为满时: rear == front && flag == true


    三.计数count——队列中有效元素个数


    队列为空时,count == 0

    当有元素入队时,count++,当count和队列的maxsize相等时,代表队列已满

    展开全文
  • 循环队列和顺序队列  队列的存储实现方式有哪些? 顺序存储(数组)链式存储(链表),此博文描述的是数组的实现(后续更新链表实现)  代码实现 初始化队列:初始化一个size长度的队列,队列的值都为0 判断队列...
  • 我们这里一共三个方法,通过是否舍弃空间来实现队列空满判断队列的数据结构 const int MaxSize=10; typedef struct { int data[MaxSize]; int front,rear; }Queue; front指向第一个元素。 rear指向下一个...

    前言

    我们这里一共三个方法,通过是否舍弃空间来实现队列空满的判断。


    队列的数据结构

    const int MaxSize=10;
    typedef struct
    {
        int data[MaxSize];
        int front,rear; 
    }Queue;
    

    front指向第一个元素。
    rear指向下一个为空的,可插入的位置。

    初始化

    bool initqueue(Queue &q){
        q.front=q.rear=0;
        return true;
    }
    

    初始化时,令front和rear都指向第一个位置。
    此时,队列为空,所以我们自然想到一个判断队列为空的条件:
    q.front == q.rear
    不知掉是否会有疑问?为什们不是像初始化那样等于0?
    因为队列的特性,它是FIFO(先进先出)的,最后出队列的位置
    不一定是第一个位置(往往也不是第一个位置)。


    一、舍弃空间

    判断队列为满的条件:

    ((q.rear+1)%MaxSize)==0 //取余是因为是循环队列
    

    意思就是最后一个空位置的下一个位置就是队列的第一个位置(循环)
    在这里插入图片描述
    如上图,此时的循环队列就是判断为满的条件。
    但是我们为什们就必须要舍弃呢?
    假设我们不舍弃,判断为满的条件是:

    q.front==q.rear
    

    是不是很眼熟,因为它和判断队列为空的条件重合了。
    所以在没有其他条件的情况下,我们只有通过舍弃最后一个位置来
    判断循环队列为满了。


    二、不舍弃空间

    不舍弃空间的话,我们有两种方法。

    1.计数器

    通过在队列的数据结构中添加一个计数位来实现判断队列的空满

    const int MaxSize=10;
    typedef struct
    {
        int data[MaxSize];
        int front,rear; 
        int count;
    }Queue;
    

    初始化时,也要微调:

    bool initqueue(Queue &q){
        q.front=q.rear=0;
        q.count=0;
        return true;
    }
    

    令计数器(count)等于0。
    显而易见的,此时的条件:
    队列满:count==MaxSize。
    队列空:count ==0。

    2.设置标志位

    我们在程序设计时,遇到此时的条件不能直接判断时,通常的做法就是添加标志位。

    const int MaxSize=10;
    typedef struct
    {
        int data[MaxSize];
        int front,rear; 
        int sign;
    }Queue;
    

    将 int 类型的sign作为标志位。
    成功插入就:sign=1。
    成功删除就:sign=0。

    初始化:

    bool initqueue(Queue &q){
        q.front=q.rear=0;
        q.sign=0;
        return true;
    }
    

    因为此时队列为空,sign就为0。
    之前讲到,不舍弃空间的话,队满的条件和队空的条件重合了。
    即:q.front == q.rear。
    现在有了标志位,就能将其分开:
    队满: q.front == q.rear && sign == 1;
    队空: q.front == q.rear && sign==0;


    展开全文
  • 循环队列判断满和的条件

    万次阅读 2019-10-15 15:34:21
    循环队列判断满和的条件 队:front=(rear+1)%size ; 队:front = rear&&

    标循环队列判断队满和队空的条件

    队满:front=(rear+1)%size ;
    队空:front = rear&&
    在这里插入图片描述
    图片上的信息来自王红梅教授版数据结构第二版

    展开全文
  • 反之,tag = 0时,Q.front = Q.rare,则说明是因为出队引起的,由此判断队列空了;方法二:用两个定义区分对列是的还是的,定义当Q.front = Q.rare时,表示队列空了;定义当Q.front = (rare + 1)%SIZE 或...
  • 判断循环队列是否为/

    千次阅读 2021-03-18 20:13:39
  • 循环队列判断与队

    万次阅读 多人点赞 2016-04-02 11:16:38
    在引用循环队列前,我们需要了解队列是如何线性实现的。 简单地讲,便是当队列为时,front = rear = 0,每当插入元素尾...我们可以发现,当循环队列属于上图的d1情况时,是无法判断当前状态是队还是队。为了
  • 顺序存储的循环队列判长

    千次阅读 2020-08-19 07:33:25
    顺序存储结构的循环队列 假设循环队列的队尾指针是rear,队头是front,其中QueueSize为循环队列的最大长度。 (1) 入队时队尾指针前进1:(rear+1)%QueueSize (2) 出队时队头指针前进1:(front+1)%QueueSize (3) 队列...
  • 问题描述:循环队列为条件是 rearfront 。如果进队元素的速度快于出队元素的速度,队尾指针很快就赶上了队首指针,此时可以看出循环...循环队列的队头指针队尾指针初始化时都置0,队条件:(rear+1)%MaxSiz...
  • front表示队头指针(指向队列内首元素) rear表示队尾指针(指向队列内尾元素的下一个位置) m表示队列的容量 ...队:front=rear 队:front=(rear+1)%m 队列内元素个数:(rear - front + m) % m ...
  • 循环队列介绍 这里介绍的时队列的顺序存储结构: 初始时:Q.front = Q.rear = 0; 队首指针进1:Q.front = (Q.front+1)%maxSize; 队尾指针进1:Q.rear = (Q.rear +1)%maxSize; 队列长度: (Q.rear +maxSize-Q.front)...
  • C语言之循环队列判断满

    千次阅读 2017-03-23 08:23:54
    何时队列为空?何时为满? 由于入队时尾指针向前追赶头指针,出队时头...其一是另设一个布尔变量以匹别队列空和满; 其二是少用一个元素的空间,约定入队前,测试尾指针在循环意义下加1后是否等于头指针,若相等则
  • 问题:链表,栈,队列(循环队列)判定或者的条件?急求 1、为条件 单链表:头结点指针域next == NULL 静态链表:数组最后一个元素值为0 循环链表:头结点的指针域指向它本身(循环查找时以p->next !=头结点...
  • 优点: 相对于直线队列来讲,直线队列在元素出队后,头指针向后移动,导致删除元素后的空间无法在利用,即使元素个数小于空间...2、另设一个布尔变量以匹别队列空和满。 3、少用一个元素的空间,约定入队前,测...
  • 循环队列满和的两种方式

    千次阅读 2019-05-18 09:31:00
    循环队列中,Q.front表示对头,Q.rear表示队尾。因为队列大小是有限的,所以在队列指针移动的时候,会出现到头的情况,这时候需要指针...在这种结构下,当出现队列满和队列的情况,这两种情况是一样的,Q.rear...
  • 其一是另设一个布尔变量以匹别队列空和满; 其二是少用一个元素的空间,约定入队前,测试尾指针在循环意义下加1后是否等于头指针,若相等则认为队满(注意:rear所指的单元始终为空); 其三是使用一个计数器...
  • 判断循环队列满

    千次阅读 2017-02-22 17:10:08
    判断队列: rear = front   判断队列满: (rear+1)%maxsize=front   往往很多人,像我一样,未能很好的理解这个表达式。 front(读起始位置)rear(写起始位置)如上图位置: rear移动一步的偏移位置...
  • 循环队列判断满

    千次阅读 2014-11-09 08:54:50
    何时队列为空?何时为满? 由于入队时尾指针向前追赶头指针,出队时头...其一是另设一个布尔变量以匹别队列空和满; 其二是少用一个元素的空间,约定入队前,测试尾指针在循环意义下加1后是否等于头指针,若相
  • 数据结构–用C++实现循环顺序队列 ...那么问题就来了,队空和判断条件相同,为了避免队时产生队空的判断或者相反,我们需要修改队条件使得队空和的判定条件分开。 方法:浪费一个元素空间
  • 循环队列判断

    万次阅读 2018-03-23 21:06:28
    第一种方法是设置一个标志量flag,当front==rear且flag=0时为,当front==rear且flag=1时队列为;第二种方法是我们修改条件,保留一个元素空间,也就是说,数组中还有一个空闲单元时,我们就认为这个队列已经了...
  • 要求循环队列不损失一个空间全部都得到利用,设置一个标志域tag,以0和1来区分当队头与队尾指针相同时队列状态的空和满,试编写与此结构相对应的入队和出队操作。
  • 在引用循环队列前,我们需要了解队列是如何线性实现的。 简单地讲,便是当队列为时,front = rear = 0,每当插入元素尾指针+1,...我们可以发现,当循环队列属于上图的d1情况时,是无法判断当前状态是队还是队
  • 1.循环队列判断的方法是判断front==rear,队的方法是判断front=(rear+1)%maxSize。(我曾经想过为什么不用一个length表示队长,当length==maxSize时队)原因就是,在频繁的队列操作中,多出一个变量会...
  • 如何判断循环队列为队or队

    千次阅读 多人点赞 2020-02-16 13:18:35
    什么是循环队列 循环队列就是将队列存储空间的最后一个位置绕到第一个位置,首尾相连形成逻辑上的环状空间,供队列循环使用。 循环队列可以更简单防止假溢出的发生,但队列大小是固定...如何判断循环队列为队or...
  • 怎么判断循环队列是否为?或者已经了?

    万次阅读 多人点赞 2017-03-29 18:39:28
    现有一个循环队列,其队头指针为 front,队尾指针为 rear,循环队列的总长度为 N,问怎么判断循环队列满了? 正确答案: D front==rear front==rear+1 front==rear%n front==(rear+1)%n 当...
  • 我现在介绍的循环队列判断满空的三种方法分别是:1.设标志位法 2.预留一位法; 3.预存长度法(顾名思义,很简单) 1.设标志位法 思路:预设一个标志,tag,初值=0,每当入队成功,tag=1;每当出队成功,tag=...
  • 实现循环队列,适合数据结构的小白~
  • 在引用循环队列前,我们需要了解队列是如何线性实现的。    (纠错:上图中出队列应该是:x=sq[front++])简单地讲,便是当队列为时,front = rear = 0,每当插入元素尾指针+1,删除元素是头指针-1。但是,我们会...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 136,587
精华内容 54,634
关键字:

循环队列如何判断空和满

友情链接: 1612261.zip