循环队列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 databool AllDataSmaller(AnyData data, bool (* comparePf)(AnyDatad1,AnyDatad2));//All data in this queue are smaller than dadabool 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():構造過程中初始化數據。
總結
以上是生活随笔為你收集整理的循环队列CircleQueue的使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2022年中国政企采购数字化转型白皮书
- 下一篇: 2022年中国美妆护肤品行业投资研究报告