关闭

循环队列

标签: 数据结构class队列模板c++
133人阅读 评论(0) 收藏 举报
分类:

实现循环队列类,剩余一地址空间区分队列的空与满


  •  暂时支持基本数据类型:int,char,float,double等。可以支持类么?,操作符new可以用来构建类数组么?
  •  模板参数实现方式:   template <typename T, unsigned N>

    template  <typename T>
    class CirQueue
    {
    private:
        T* a;
        int N;
        int F;//队列头
        int R;//队列尾
    public:
        CirQueue(int len);
        bool IsEmpty();
        bool IsFull();
        bool InQueue(T val);
        bool OutQueue(T& val);
    }


    CirQueue::CirQueue(int len):
        a(NULL),
        N(len),
        F(0),
        R(0){
        a = new T[len];//???
    }


队列空 :头尾指向相同

    bool CirQueue::IsEmpty()
    {
        if (F == R)
        {
            return true;
        }else
        {
            return false;
        }
    }


队列满:头指向落后尾一个单位

    bool CirQueue::IsFull()
    {
        if ( (F+1)%N == R)
        {
            return true;
        }else
        {
            return false; 
        }
    }


入队

    bool CirQueue::InQueue(T val)
    {
        if( (F + 1)%N == R)
        {
            return false;
        }else
        {
            a[F] = val;
            F = (F + 1)%N;
            return true;
        }
    }


出队

    bool CirQueue::OutQueue(T & val)
    {
        if (F == R)
        {
            return false;
        }else
        {
            val = a[R];
            R = (R + 1)%N;
            return true;
        }
    }


0
0
查看评论

循环队列的定义及操作

#include #include #define MAXSIZE 50 typedef struct { int element[MAXSIZE]; int front; //队头指示器 int rear; //队尾指示器 } SeqQueue; void Ini...
  • potential1
  • potential1
  • 2017-05-21 18:32
  • 644

数据结构:循环队列(C语言实现)

生活中有很多队列的影子,比如打饭排队,买火车票排队问题等,可以说与时间相关的问题,一般都会涉及到队列问题;从生活中,可以抽象出队列的概念,队列就是一个能够实现“先进先出”的存储结构。队列分为链式队列和静态队列;静态队列一般用数组来实现,但此时的队列必须是循环队列,否则会造成巨大的内存浪费;链式队列是...
  • lpp0900320123
  • lpp0900320123
  • 2014-03-07 19:15
  • 86835

循环队列有关操作 环形缓冲区

循环队列有关操作 在通信程序中,经常使用环形缓冲区作为数据结构来存放通信中发送和接收的数据。环形缓冲区是一个先进先出的循环缓冲区,可以向通信程序提供对缓冲区的互斥访问。 1、环形缓冲区的实现原理 环形缓冲区通常有一个读指针和一个写指针。读指针指向环形缓冲区中可读的数据,写指针指向环形缓冲区...
  • zhubosa
  • zhubosa
  • 2012-07-13 17:10
  • 4650

队列---循环队列与链队列比较

对于循环队列与链队列的比较,可以从两方面来考虑:1、从时间上,其实它们的基本操作都是常数时间,即都为0(1)的,不过循环队列是事先申请好空间,使用期间不释放,而对于链队列,每次申请和释放结点也会存在一些时间开销,如果入队出队频繁,则两者还是有细微差异。2、对于空间上来说,循环队列必须有一个固定的长度...
  • will130
  • will130
  • 2015-10-21 23:11
  • 996

数据结构——循环队列存储结构以及实现

队列的顺序存储结构,是将元素存在一个一维数组中,队头所在的位置下标是0,当要入队操作时,直接在队尾后一个位置插入一个结点即可,时间复杂度为O(1)。而出队列,出队的元素下标为0,所以队列中所有的元素都要向前移动,时间复杂度为O(n)。如果不去限制队头的元素必须存在下标为0的位置,那么也可以做到时间复...
  • Carry_zwxb
  • Carry_zwxb
  • 2016-10-30 05:25
  • 1405

循环队列的主要特点及其应用

相信大家对队列都不陌生,举个列子我就想到排队打饭了,先到的先打饭;也就是说队列同栈相反,是队头取元素,队尾加元素的,我就不多加赘述了。要注意到队列结构由于他的队尾指针指向最后一个数组元素时,队头指针不一定在数组下标为零的地方,这就意味着在数组的前几组数据为空时可能会浪费资源,而队尾却又加不了数据了,...
  • qq_15718789
  • qq_15718789
  • 2016-10-06 10:38
  • 551

循环队列的相关计算公式

· 设front为队首指针,rear为队尾指针,m为队列最大容量。 入队: rear = (rear + 1) % m出队: front = (front + 1) % m队空: front = rear队满: front = (rear + 1) % m当前队列中的元素数目: ...
  • u011080472
  • u011080472
  • 2016-04-17 15:53
  • 1468

普通队列,循环队列以及链队列的相关操作

普通队列,循环队列以及链队列的相关操作
  • ismahui
  • ismahui
  • 2017-08-01 16:37
  • 332

C#数据结构回顾之循环队列

引言:队列就和我们平常排队买肾6一样,排队第一个肯定先能买到,也具有“先进先出”即所谓的FIFO,其实质用一维数组来存放顺序队列中的数据元素。插入操作限定在表的尾部而其它操作限定在表的头部进行的。队头位置设在数组下标为0的端,用front表示;队尾位置设在数组的另一端,用rear表示。front和r...
  • CrazyMo_
  • CrazyMo_
  • 2015-05-29 16:17
  • 1381

循环队列及C语言实现<一>

循环队列是为了充分利用内存,进行数据操作的一种基本算法。具体实现方式可划分为:链式队列和静态队列,这里所谓的静态是指在一片连续的内存区域进行数据操作。本文只讲述静态队列,也是最简单的实现方式,静态队列以及链表的实现内容请参见我的其它博文。以下静态循环队列简称为循环队列。    一、循环队列的特点...
  • JAZZSOLDIER
  • JAZZSOLDIER
  • 2016-09-21 22:34
  • 3844
    个人资料
    • 访问:136次
    • 积分:11
    • 等级:
    • 排名:千里之外
    • 原创:1篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章分类
    文章存档
    阅读排行