精华内容
下载资源
问答
  • //实现循环 Q->length++; return 1; } } DataType DeQueue(CirQueue *Q)//出队 { if (Q->length == 0) //队空 { printf("Queue is empty! Cannot DeQueue.\n"); return 0; } else { DataType ret = Q->data[Q->front...

    满意答案

    00e27ab806e4881f8254fe7ae8741834.png

    cowkinki

    2013.07.04

    00e27ab806e4881f8254fe7ae8741834.png

    采纳率:44%    等级:12

    已帮助:7278人

    有个设了队头,队尾的,你参考下,入队的时候队尾指针变,出队的时候队头指针变

    int EnQueue(CirQueue *Q, DataType e)//入队

    {

    if (Q->quelen == QueueSize) //队满条件

    {

    printf("Queue is full! Cannot EnQueue.\n");

    return 0;

    }

    else

    {

    Q->data[Q->rear] = e;

    Q->rear = (Q->rear + 1) % QueueSize;//实现循环

    Q->length++;

    return 1;

    }

    }

    DataType DeQueue(CirQueue *Q)//出队

    {

    if (Q->length == 0) //队空

    {

    printf("Queue is empty! Cannot DeQueue.\n");

    return 0;

    }

    else

    {

    DataType ret = Q->data[Q->front];//记录出队元素的值

    Q->front = (Q->front + 1) % QueueSize;//该语句用来实现循环

    Q->length--;

    return ret;//返回出队元素值

    }

    }

    00分享举报

    展开全文
  • 循环队列的用处和优点

    千次阅读 2013-10-11 21:01:25
    用处:约瑟夫环 优点:为充分利用向量空间,克服"假溢出"现象的方法是:将向量空间想象为一个首尾相接的圆环,并称这种向量为循环向量。存储在其中的队列称为循环队列(Circular Queue)。

    用处:约瑟夫环

    优点:为充分利用向量空间,克服"假溢出"现象的方法是:将向量空间想象为一个首尾相接的圆环,并称这种向量为循环向量。存储在其中的队列称为循环队列(Circular Queue)。

    展开全文
  • 循环队列

    2015-08-11 10:06:46
    队列的特点是遵循先进先出的原则,在一端进行插入在另一端进行删除,允许插入的一端是队尾,允许删除的一端是队头。循环队列是队列的顺序化实现方式。将主要包括初始化、入队、出队、求队列元素个数的操作。

    队列的特点是遵循先进先出的原则,在一端进行插入在另一端进行删除,允许插入的一端是队尾,允许删除的一端是队头。循环队列是队列的顺序化实现方式。将主要包括初始化、入队、出队、求队列元素个数的操作。

    #include <stdio.h>
    #include <stdlib.h>
    #include <malloc.h>
    
    #define OK 1
    #define ERROR 0
    #define MAXQSIZE 10//最长队列长度
    #define OVERFLOW 1
    
    typedef struct
    {
        int *base;//初始化的动态分配空间
        int front;//队头元素
        int rear;//队尾元素的下一个位置
    
    }SQueue;
    
    //初始化空队列
    int InitQueue(SQueue *Q)
    {
        Q->base = (int *)malloc(MAXQSIZE *sizeof(int));
        if(!Q->base)//存储分配失败
            exit(OVERFLOW);
        Q->rear = 0 ;
        Q->front = Q->rear;
        return OK;
    }
    
    //求队列的长度
    int QueueLength(SQueue *Q)
    {
        int n;
        n = (Q->rear-Q->front + MAXQSIZE)%MAXQSIZE;
        return n;
    }
    
    //插入
    int  InsertQueue(SQueue *Q, int n)
    {
        if ((Q->rear+1)%MAXQSIZE == Q->front)//队列满
            printf("The queue is full\n");
        Q->base[Q->rear] = n;
        Q->rear = (Q->rear+1)%MAXQSIZE;
        return 0;
    }
    
    //删除
    int DeleteQueue(SQueue *Q)
    {
        int n;
        if (Q->front == Q->rear)
            printf("The queue is empty\n");
        n = Q->base[Q->front];
        Q->front = (Q->front+1)%MAXQSIZE;
        return n;
    }
    
    
    int main()
    {
        SQueue *Q;
        int k,n;
        Q=(SQueue *)malloc(sizeof(SQueue));
        InitQueue(Q);
        int quit=1;
        while(quit==1)
        {
            printf("1.Insert 2.Delete 3.Length \n");
            scanf("%d",&k);
            getchar();
            switch(k)
            {
                case 1:
                    printf("Insert number \n");
                    scanf("%d",&n);
                    InsertQueue(Q,n);
                    break;
    
                case 2:
                    printf("Delete number is %d\n",DeleteQueue(Q));
                    break;
                case 3:
                    printf("%d\n",QueueLength(Q));
                    break;
            }
        }
        return 0;
    }
    
    展开全文
  • 队列之循环队列

    2019-03-18 11:27:50
    循环队列:具有队头指针和队尾指针,指示队列元素所在的位置,避免删除元素时移动大量元素。 循环队列特性: 只能从队尾插入元素、在队头删除元素。 先进先出(First In First Out)的线性表,先进入的元素出队,后...

    首先搞清楚什么是队列?

    队列:只允许在一段进行插入,在另一端进行删除的线性表。
    循环队列:具有队头指针和队尾指针,指示队列元素所在的位置,避免删除元素时移动大量元素。

    循环队列特性:

    • 只能从队尾插入元素、在队头删除元素。
    • 先进先出(First In First Out)的线性表,先进入的元素出队,后进入的元素才能出队。

    优点:

    • 相比普通的队列,元素出队时无需移动大量元素,只需移动头指针。
    • 适合处理用户排队等待的情况。

    缺点:

    • 需要预先分配大量存储空间。

    时间复杂度

    • 读取时的时间复杂度为O(1)。
    • 插入、删除时的时间复杂度为O(1)。

    使用循环数组实现循环队列
    Java中具体实现容器类ArrayDeque
    具体详情查看原博文深入理解循环队列
    循环队列

    展开全文
  • 当变成循环队列之后,删除元素后的空间仍然可以利用,最大限度的利用空间。 判断方式: 1、采用计数器来判断,空时,计数器为0,满时,计数器为maxsize。 2、另设一个布尔变量以匹别队列的空和满。 3、少用一个...
  • 循环队列优点 普通队列出队操作开销大:在出队操作时,索引为0后面的所有元素,都需要往前移动一位,元素越多,消耗的时间也越多,时间复杂度为O(N) 3.1 循环队列的逻辑 当元素较少时(tail位置在front后面),...
  • 为了避免消息队列频繁的申请和释放内存,采用循环队列作为消息队列。 queue.h: #ifndef INC_QUEUE_H_ #define INC_QUEUE_H_ #include #include using namespace std; #define MAX_QUEUE_SIZE 500000 #...
  • 什么是循环队列

    2021-08-05 12:44:43
    什么是循环队列3.循环队列的代码块3.1入队3.2出队3.3判空3.4测试代码4.优点 1.什么是队列 类似于食堂排队打饭,一个一个往前排入队伍里,就是入队;而打完饭从头到尾一个一个出来,就是出队。 队列就是你排队的那个...
  • java实现循环队列

    千次阅读 2018-03-09 20:56:59
    循环队列即为队列的顺序表示和实现,其优点主要是入队和出队的时间复杂度均为O(1),这要归功于“循环队列将存储结构的理解由序列型转换为环型”的思维方式,如图1所示。图1 序列型转换为环型的思维方式 循环队列...
  • 队列----循环队列

    2019-04-15 11:39:42
    循环队列:具有队头指针和队尾指针,指示队列元素所在的位置,避免删除元素时移动大量元素。 循环队列特性: 只能队尾插入元素、在队头删除元素。 先进先出(First In First Out)的线性表,先进入的元素出队,后...
  • 线性表之循环队列

    2017-01-25 00:45:23
    优点:克服了顺序队列的空间浪费问题,其优点在顺序队列和链队列之间。缺点:静态的。实现功能和顺序队列一样,只是让front和rear循环,不管哪个到了数组末尾,都会循环至a[0]处,继续利用前面剩余的空间,直到利用...
  • 数据结构-队列之循环队列

    千次阅读 2018-10-22 10:44:06
    将顺序队列臆造为一个环状的空间,即把存储队列元素的表从逻辑上看成一个环,称为循环队列。 当队首指针q.front=MaxSize-1后,再前进一个位置就自动归0,可以通过除法取余运算(%)来实现。 初始时:q.front = q....
  • 队列---循环队列与链队列比较

    千次阅读 2015-10-21 23:11:45
    对于循环队列与链队列的比较,可以从两方面来考虑:1、从时间上,其实它们的基本操作都是常数时间,即都为0(1)的,不过循环队列是事先申请好空间,使用期间不释放,而对于链队列,每次申请和释放结点也会存在一些...
  • 循环队列样式结构图: 优点: 解决了顺序队列只能从队尾插入元素而导致空间的浪费; 问题: 在循环队列中,空队特征是front = rear, 队满时也会有front = rear; 判断条件将出现二义性; 解决方法 1、使用...
  • 循环队列(Circular Queue)

    千次阅读 2016-05-28 18:09:41
    循环队列(Circular Queue) 1. 循环队列的概念 1.1 循环队列的定义 为了能够充分地使用数组中的存储空间,克服”假溢出”现象,可以把数组的前端和后端连接起来,形成一个环形的表,即把存储队列元素的表从逻辑上...
  • 写在前面写这篇博客的灵感来自于自己在项目上用到的循环队列,顺便讲讲libevent中evbuffer和muduo(木铎)中buffer。循环队列循环队列是很常见的数据结构,在大学计算机课程上也会遇到,被应用到很多场景,比如管道...
  • 本文为数据结构课程的第一篇实验报告,主要是用c++实现共享栈、循环队列和链栈,仅供参考学习(也没人看),如有错误望及时提出,我及时改正。 实验一:线性结构的实现 一、实验目的 实验目标: 验证C语言环境下,...
  • 2、循环队列及其优点  2.1、循环队列是队列的扩展,就是队列首尾连接,形成一个闭环的圈子。  2.2、优点  充分利用存储空间。 3、队列的实现方式  3.1、队列与栈的实现方式一样,一般分为两种:线性队列与...
  • 循环队列-顺序存储-c语言实现

    千次阅读 2015-07-03 16:11:27
    循环队列-线性表-顺序结构 */ #include<stdio.h>#define OK 1; #define ERROR 0; #define MAXSIZE 20 typedef int QElemType; typedef int Status;//顺序存储结构 typedef struct { QElemType data[MAXSIZE]; ...
  • 1. 数据结构和算法(一)Java实现循环队列 1.1 什么是循环队列   循环队列:具有队头指针(front)和队尾指针(rear),指示队列元素所在的位置,避免删除元素时移动大量元素。队列也是一种线性表,只不过它是操作...
  • 循环队列-链式存储结构-c语言实现

    千次阅读 2015-07-03 15:57:08
    /* 循环队列-线性表-链式结构 */ #include #include #define OK 1 #define ERROR 0typedef int Status; typedef int QElemType; //节点 定义 typedef struct QNode{ QElemType data; struct
  • 队列是只允许在一端进行插入操作、而在另一端进行删除操作的线性表。 一、栈 1. 定义  栈是限定仅在表尾进行插入和删除操作的线性表。(又称后进先出的线性表) 2. 抽象数据类型 3. 栈的顺序存储结构...
  • 循环队列判断满与空

    千次阅读 2013-09-22 00:08:32
    何时队列为空?何时为满? 由于入队时尾指针向前追赶头指针,出队时头指针向前追赶尾指针,故队空和队满时头尾指针均相等。...其二是少用一个元素的空间,约定入队前,测试尾指针在循环意义下加1后是否
  • 对于队列(Queue)是什么,再次不再赘述,与链表、栈的实现一样,队列作为一种特殊的线性表,也存在顺序存储以及链式存储两种方式。 顺序存储的队列 采用顺序存储的方式来存储队列,最简单的方式是对于n个元素的...
  • [循环队列]使用原因与注意事项

    千次阅读 2015-07-11 00:24:32
    问题描述:循环队列是一般队列的变种吧,就是将队列首尾相连了,貌似这样就不必考虑队列满而无法使用了,因为到了队列尾又会循环回到队列首。在嵌入式底层代码实现中,一些串行端口数据特别是串口,用到循环队列的...
  • 线性结构的两种常见应用之二队列 定义: 一种可以实现“先进先出”的存储结构。...循环队列的必须要弄清除的7个问题: 1.静态队列为什么必须是循环队列 由于连续空间的问题,为了节省空间,方便操作
  • 3 基于循环数组的无锁队列 3.1 它是如何工作的? 3.1.1 CAS操作 3.1.2 向队列插入元素 3.1.3 从队列中移除元素 3.1.4 在多于一个生产者线程的情况下yielding处理器的必要性 4 已知的问题 4.1 ...
  • 关于循环队列的体会

    千次阅读 2014-10-11 00:05:32
    1.循环队列优点:充分利用向量空间,克服“假溢出现象”。 2.循环队列的两种写法:第一种可以设头,尾两个指针。但这样就会存在一个问题:在判断队空还是队满的时候条件都是front = rear .因此,如何判断队空...
  • “消息队列”是在消息的传输过程中保存消息的容器。消息队列管理器在将消息从它的源中继到它的目标时充当中间人。队列的主要目的是提供路由并保证消息的传递;如果发送消息时接收者不可用,消息队列会保留消息,直到...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 66,695
精华内容 26,678
关键字:

循环队列的优点