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->フロント>次に=ノード。 }