數據結構與算法(8)--循環隊列

循環隊列


//入隊 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; 
} 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章