MOOC 2.3キュー

1.巡回キュー

順次記憶キュー実装// 
<格納されたデータ要素の最大数>のMaxSize #defineする
構造体QNode 
{ 
	のElementTypeデータ【のMaxSize]; 
	int型背面、
	前面int型; 
;} 
のtypedef構造体QNode *キュー; 

// 1.エンキュー
ボイドADDQを(PTRQキューのElementTypeアイテム)
{ 
	IF((PtrQ-> +リア1)==%PtrQ-のMaxSize>フロント。)
	{ 
		のprintf( "キューフル"); 
		リターン; 
	} 
	PtrQ-> REAR =(PtrQ-> + REAR 。1)にMAXSIZE%; 
	PtrQ->データ[PtrQ-> REAR]アイテム=; 
} 

// 2デキュー
のElementType DELETEQ(キューPTRQ)
{ 
	IF(PtrQ-> ==フロントPtrQ-> REAR)
	{ 
		のprintf(「キュー空「); 
		; REEORを返す
	} 
	他の
	{ 
		PtrQ->フロント=(PtrQ->フロント+ 1)%のMaxSize。
		リターンPtrQ->データ[PtrQ->フロント]; 
	} 
}

  

2.チェーンキュー

//記憶待ち行列にリンク
ノード構造体
{ 
	のElementTypeデータ、
	次のノード*構造体; 
}; 
構造体QNode 
{ 
	ノード* REAR構造体、
	ノード・フロント構造体; 
}; 
typedefは構造体QNode *キュー、
キューPTRQ; 

のElementType DELETEQ(キューPTRQ)
{ 
	ノード構造体* FrontCell; 
	のElementType FrontElem; 
	
	IF(PtrQ->フロント== NULL)
	{ 
		のprintf( "キュー空") エラーを返す
	} 
	FrontCell = PtrQ->フロント; 
	IF(PtrQ-> ==フロントPtrQ- >リア)//唯一のキュー要素
	{ 
		PtrQ-> =フロントPtrQ->リア= NULL; //キューを削除が空である
	}  
	{
		PtrQ->フロント= PtrQ->フロント>次に、
	} 
	FrontElem = FrontCell->データ。
	無料(FrontCell)。//释放被删除的结点空间
	リターンFrontElem。
} 

ボイドADDQ(キューPTRQ、のElementTypeアイテム)
{ 
	構造体ノードのノード。
	ノード=(構造体ノード*)はmalloc(はsizeof(構造体ノード))。
	ノード- >データ=項目; 
	ノード- >次に= PtrQ->フロント>次に、
	PtrQ->フロント>次に=ノード。
}

  

おすすめ

転載: www.cnblogs.com/mjn1/p/11441611.html