队列(循环队列)

声明:图片及内容基于https://www.bilibili.com/video/av94331942

原理分析 数据结构

FIFO:先进先出

队列(循环队列)

front指向头元素的前一个位置

rear指向最后一个元素

如果用rear=front来判断队列为空还是满,会出现歧义,其实无法判断

队列(循环队列)

 

此时,若再插入一个元素,则rear=front。

为了解决这个问题,本问采取留出一个空间不用的策略。及队列容量始终比开辟空间少一。

基本数据类型

class CirQueue { private: T* data; int front; int rear; int mSize; public: CirQueue(); CirQueue(int size); ~CirQueue(); bool enQueue(T item); //入队 bool deQueue(T &item); //出队 bool getFront(T& item);//获得队头 bool isEmpty(); bool isFull(); void clearQueue(); void displayQueue(); int queueLength(); //获得队列长度 class Out_of_range{}; //异常类 class Empty{}; //异常类 };

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wsxfzg.html