キュー/ストレージの実装チェーンを注文します

キュー:特定の運用制約を有する線状の形、もう一方の端の挿入、削除の一端のみ。

特徴:まず、テーブルファーストアウト、最初のサーブ、来ます

ヘッドのフロント、リアテール

 

シーケンシャルストレージ

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;}

 

おすすめ

転載: www.cnblogs.com/zhengxin909/p/12571766.html