キュー:特定の運用制約を有する線状の形、もう一方の端の挿入、削除の一端のみ。
特徴:まず、テーブルファーストアウト、最初のサーブ、来ます
ヘッドのフロント、リアテール
シーケンシャルストレージ
1つ の#defineは MaxSizeの<保存されたデータ要素の最大数> 2 3。 構造体QNode { 4。 5。 のElementTypeデータ【のMaxSize]; 6 。7 INT REAR; // エンド 8。 9。 INTフロント; // 頭部 10 11 }; 12は 13であるのtypedef 構造体 *キューQNode;
14 //フロントREAR = = -1;
循環キュー・ストレージ・アプローチ:
追加のタグの(1)使用:サイズまたはタグ(1インサート、0削除)ドメイン
(2)N-1のみの空間アレイを使用
キュー(円形キュー)に(1)
1 空隙ADDQ(キューPTRQ、のElementTypeアイテム){ 2 3 であれば((PtrQ->リア+ 1)%のMaxSize == PtrQ-> フロント){ 4 5 のprintf(" 队列满" )。 6 7 リターン。 8 9 } 10 11 PtrQ-> reat =(PtrQ->リア+ 1)%のMaxSize。 12 13 PtrQ->データ[PtrQ->リア] = 項目。 14 15 }
(2)キュー
ElementType DELETEQ(キューPTRQ){ 場合(PtrQ->フロント== PtrQ-> reat){ のprintf(" 队列空" )。 リターンERROR; } 他{ PTRQ - >フロント=(PtrQ->フロント+ 1)%のMaxSize。 リターン PtrQ->データ[PtrQ-> フロント]; } }
チェーン店
ストラクトノード{の//リンクリストノード構造
のElementTypeデータ、
ノードストラクト* 次へ;
};
構造体{//鎖QNodeキュー構造の
構造体ノード*後、テール・ノードへ//ポイント
//ヘッド接合点、構造体ノード*フロントポイント};
typedefは構造体QNode * キュー、 キューPTRQ。
挿入および削除操作は、リストの両端で行われています
ヘッドノードのチェーン運用チームのチームリストなし
DELETEQのElementType(キューPTRQ){
ノード*ストラクトFrontCellと、
のElementType FrotElem;
IF(PtrQ->フロント== NULL){
のprintf( "空のキュー" );
戻りERROR;
}
FrontCell = PtrQ-> フロント; IF(PtrQ->フロント== PtrQ->リア)//もし一つだけのキュー要素 PtrQ->フロント= PtrQ->リア= NULL; // ポスト・キューが他の空で削除{PtrQ-> =フロントPtrQ-を>フロント> 次に、 FrontElem = FrontCell - }> データ;フリー(FrontCell);戻りFrontElem;}