循環隊列
//入隊 rear = (rear+1)%MaxSize
//出隊 front = (front+1)%MaxSize
/*
** 把front==rear 僅作爲隊空的判定條件,
** 當隊列滿的時候,令數組中仍然保留一個空餘單元,我們認爲這個時候隊列滿了
** (rear+1)%MaxSize == front
*/
//隊列中的元素個數 (rear-front+MaxSize)%MaxSize
//入隊
bool EnQueQue(SqQueue &Q,ElemType x)
{
if((Q.rear+1)%MaxSize==Q.front) return false; //隊滿
Q.data[Q.rear] = x; //rear指向隊尾元素的下一個節點
Q.rear = (Q.rear+1)%MaxSize;
return true;
}
//出隊操作
bool DeQueue(SqQueue &Q,ElemType &e)
{
if(Q.reat == Q.front)
{
return false; //隊列爲空
}
x = Q.data[Q.front];
Q.front = (Q.front+1)%MaxSize;
return true;
}