C++的队列操作
队列:只允许在表的一端(队头)进行插入操作,在另一端(队尾)进行删除操作
队列的操作特性:先进先出(First In First Out,FIFO)
顺序队列:具有单向移动性,会造成假溢出。
假溢出:数组空间发生上溢,但数组的低端还有空闲空间
循环队列:队列采用顺序存储,并且数组是头尾相接的循环结构(循环队列可以很好地解决假溢出问题)
【求模(正余数)使得数组下标循环】
队列初始化:只需将front和rear同时指向队伍的同一位置,一般为 rear = front = QueueSize-1;
队空的判定条件:front = rear
队满的判定条件:(rear+1) % QueueSize = front
#include<iostream>
using namespace std;
const int QueueSize = 100;
template <typename DataType>
class CirQueue{
public:
CirQueue( );
~ CirQueue( ){
};
void EnQueue(DataType x); //入队操作
DataType DeQueue( ); //出队操作
DataType GetQueue( ); //取队头元素
void PrintQueue(); // 遍历队列,front->rear
int Empty( ); //判断队伍是否为空
private:
DataType data[QueueSize];
int front, rear;
};
// 初始化一个空的循环队列,只需front和rear指向同一位置
template <typename DataType>