循环队列CircleQueue的使用

循环队列CircleQueue 的使用

       循环队列是实际编写应用中比较重要的一种数据结构,下面介绍在实际项目中用到的循环队列CircleQueue。它是用C++编写的,具体源代码见 https://github.com/duankai/CircleQueue

      

template<typenameAnyData>
struct DATA_NODE_T
{
    int index;
    AnyData * paDataNode;
    DATA_NODE_T<AnyData> * pstNext;
};

/************************************************************************/
/*
/* @CLASS: Declaration of CircleQueue class
/*
/************************************************************************/
template<typenameAnyData>
class CircleQueue
{
public :
    CircleQueue(intiSize);
    int GetCircleQueueLength();
    bool AddData(AnyData data);
    bool AllDataLarger(AnyData data, bool (* comparePf)(AnyDatad1,AnyDatad2));//All data in this queue are larger than data
    bool AllDataSmaller(AnyData data, bool (* comparePf)(AnyDatad1,AnyDatad2));//All data in this queue are smaller than dada
    bool DelData();
    bool FullQueue();
    bool GetInstanceStatus();
    AnyData * GetDataByIndex(intindex);
    ~CircleQueue();
private:
    void InitData();
private:
    int m_iSize;
    void * m_pdData;
    bool m_bInitRst;
    DATA_NODE_T<AnyData>*paHead;
    DATA_NODE_T<AnyData>*paTail;
};

在要使用的源文件代码中include CircleQueue.h即可。


1.CircleQueue(intiSize): 构造函数,iSize表示队列的长度。

2.int GetCircleQueueLength():得到队列的大小。

3.bool AddData(AnyDatadata):向队列中添加数据,如果超出队列的大小,则覆盖第一个添加的数据。

4.bool AllDataLarger(AnyDatadata,bool(*comparePf)(AnyDatad1,AnyDatad2)):用data和循环队列中的所有数据比较大小,比较函数则由comparePf指定。如果循环队列中的所有数据大于给定的data,则返回True,否则返回False。

5.bool AllDataSmaller(AnyDatadata,bool(*comparePf)(AnyDatad1,AnyDatad2)):用data和循环队列中的所有数据比较大小,比较函数则由comparePf指定。如果循环队列中的所有数据小于给定的data,则返回True,否则返回False。

6.bool DelData():删除当前数据,当前数据是尾指针所指的数据。

7.bool FullQueue():判断循环队列是否已满。

8.bool GetInstanceStatus():获得CircleQueue的实例状态,判断是否初始化成功。如果成功返回True,否则返回False。

9.AnyData * GetDataByIndex(intindex):根据循环队列节点索引获得CirleQueue中存储 的数据,类型为用户已经指定的类型。

10.~CircleQueue():析构函数。

11.void InitData():构造过程中初始化数据。


你可能感兴趣的:(数据结构,C++,循环队列)