C# のデータ構造とアルゴリズムにおけるキューの簡単な分析

C# のデータ構造とアルゴリズムにおけるキューの簡単な分析

C# のデータ構造とアルゴリズムのキューは、リストの先頭での削除操作とリストの末尾での挿入操作のみを許可する特殊な線形リストです。挿入が実行される側はキューの末尾と呼ばれ、削除が実行される側はキューの先頭と呼ばれます。これはよく先入先出法(FIFO)と呼ばれます。中国では昔からこの順番ルールが使われてきました。例えば、穀倉管理官がこのルールを習得する前は、倉庫の一番下の穀物は保管期間が長すぎるため腐ってしまいます。その後、賢い人が穀倉の両側のドアを開け、食料が同時に倉庫に出入りできるようにしました。これにより、管理がはるかに便利になりました。キューに要素がない場合、そのキューは空のキューと呼ばれます。

C# データ構造とアルゴリズムのキューによって実装されるインターフェイスは次のとおりです。

  1. 公共 インターフェースIQueen﹤T﹥
  2. {
  3.     さ();
  4.     ブール型IsEmpty();
  5.     ブールIsFull();
  6.      voidクリア();
  7.      void IN(T アイテム);
  8. T アウト();
  9. T フロントアイテムを取得します。
  10. }

C# データ構造とアルゴリズムのキュー実装の原理とコードは次のとおりです。

  1. 公共 クラスJQueen﹤T﹥ : IQueen﹤T﹥
  2. {
  3.     プライベート 整数サイズ;
  4.     プライベートT[]アイテム;
  5.     プライベート  int前面;
  6.     プライベート  int戻る;
  7.  
  8.     パブリックJQueen()
  9. :これ(100)
  10. {
  11. サイズ = 100;
  12. アイテム =新しいT[100];
  13. 前 = 後ろ = -1;
  14. }
  15.  
  16.     パブリックJQueen( int長さ)
  17. {
  18. サイズ = 長さ;
  19. アイテム =新しいT[長さ];
  20. 前 = 後ろ = -1;
  21. }
  22.  
  23.     パブリックT this [ intインデックス]
  24. {
  25.          get { return item[index]; }
  26.         設定{ 項目[インデックス] = 値; }
  27. }
  28.  
  29.     公共  intフロント
  30. {
  31.         取得{戻り値: front; }
  32.         設定{ front = 値; }
  33. }
  34.  
  35.     公共  int戻る
  36. {
  37.         取得{戻る; }
  38.         設定{ 戻る = 値; }
  39. }
  40.  
  41.     公共 最大
  42. {
  43.         取得{サイズを返す; }
  44.         設定{ サイズ = 値; }
  45. }
  46.  
  47.     公共 整数長さ()
  48. {
  49.          return (back - front + size) % size;
  50. }
  51.  
  52.     公共 ブール型IsEmpty()
  53. {
  54.         戻り値(前 == 後);
  55. }
  56.  
  57.     公共 ブールIsFull()
  58. {
  59.         戻り値((back + 1) % size == front);
  60. }
  61.  
  62.     公共  voidクリア()
  63. {
  64. 前 = 後ろ = -1;
  65. }
  66.  
  67.     公共  void IN(T アイテム)
  68. {
  69.          (IsFull()の場合
  70. {
  71.             投げる 新しいArgumentOutOfRangeException( "RangeException"
  72.   "クイーン範囲例外: クイーンがいっぱいです" );
  73. }
  74. item[++back] = アイテム;
  75. }
  76.  
  77.     パブリックT Out()
  78. {
  79. T tmp =デフォルト(T);
  80.         空の場合()
  81. {
  82.             投げる 新しいArgumentOutOfRangeException( "RangeException"
  83. "クイーン範囲例外: クイーンが空です" );
  84. }
  85. tmp = アイテム[++前面];
  86.          tmpを返します
  87. }
  88.  
  89.     パブリックT GetFrontItem()
  90. {
  91.         空の場合()
  92. {
  93.             投げる 新しいArgumentOutOfRangeException( "RangeException"
  94. "クイーン範囲例外: クイーンが空です" );
  95. }
  96.         アイテム[先頭 + 1]を返します
  97. }
  98.  
  99. }

キュー テスト キュー コードの C# データ構造とアルゴリズム:

  1. 公共 クラスプログラム
  2. {
  3.     静的  void Main(文字列[]引数)
  4. {
  5.         試す 
  6. {
  7. JQueen﹤文字列﹥ JQ = new JQueen﹤文字列﹥();
  8. Console.WriteLine(JQ.IsEmpty()); //空ですか?  
  9. Console.WriteLine(JQ.IsFull()); // キューはいっぱいですか?  
  10. Console.WriteLine(JQ.MaxLength); // 初期化時のキューの長さ 
  11. Console.WriteLine(JQ.Length()); //キュー要素の長さ 
  12. Console.WriteLine(JQ.Front); // チームヘッドの位置 
  13. Console.WriteLine(JQ.Back); // チーム末尾の位置 
  14. JQ.IN( "A" ); //要素を挿入 
  15. JQ.IN( "B" );
  16. JQ.IN( "C" );
  17. JQ.IN( "D" );
  18. Console.WriteLine(JQ.GetFrontItem()); // チーム ヘッド要素 
  19. Console.WriteLine( "------要素がキューから削除された後の先頭要素-------" );
  20. JQ.Out(); //出力A  
  21. JQ.Out();
  22. Console.WriteLine(JQ.GetFrontItem()); // 2つの要素をキューから取り出した後、キューの先頭要素 
  23. コンソールの行を読み取ります。
  24. }
  25.          catch (例外例)
  26. {
  27. Console.WriteLine(ex.Message); //例外 
  28. コンソールの行を読み取ります。
  29. }
  30. }
  31. }

C# データ構造とアルゴリズムのキュー プログラムを実行した結果は次のとおりです。

これで、C# のデータ構造とアルゴリズム - キューの紹介は終わりです。C# のデータ構造とアルゴリズム - キューの紹介を通じて、C# のデータ構造とアルゴリズムについて理解を深めていただければ幸いです。

<<:  C# データ構造とアルゴリズム スタックの簡単な分析

>>:  C# のデータ構造とアルゴリズムにおける線形リストの構築クラスの簡単な分析

ブログ    
ブログ    
ブログ    

推薦する

ソフトマックスボトルネックを超えて: 高ランク RNN 言語モデル

因数分解に基づいて、リカレントニューラルネットワーク (RNN) に基づく言語モデルは、複数のベンチ...

2020 年の AI と機械学習の重要なトレンドは何ですか?

競争が激化するテクノロジー市場において、ハイテク新興企業から世界的な多国籍企業まで、誰もが人工知能を...

2018 年の人工知能の予測を振り返ってみると、どれが現実になったのでしょうか?

人工知能は非常に複雑であり、急速に発展しています。今後数年間でそれがどうなるかを正確に予測することは...

このAIアルゴリズムの面接体験は非常に役立つ:Amazonは履歴書から面接まで実践的な経験を共有

この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...

キッシンジャー:今やAIは人間が世界を理解するための第3の方法となっている

2023年、ChatGPTは人工知能に対する世界的な注目を集めました。科学界、知識人界、産業界は、A...

ビッグデータ、機械学習、ディープラーニングのためのコマンドラインツールの概要

[51CTO.com クイック翻訳] キーボードを握ってください! マウスや GUI がなくても、O...

2019年の人工知能レビュー:産業の発展は急速な進展を遂げている

2019年、中国の人工知能市場は「熱狂的」だった。IDCの統計によると、世界の人工知能市場規模は20...

AIRankingsが世界の大学AIランキングを発表

今年も大学入試シーズンがやってきました。私が大学受験をしていた頃には、この言葉が流行っていたのを覚え...

人工知能が初めて小児脳腫瘍治療薬の開発に貢献

専門家は、この画期的な進歩により、人工知能を使って新たながん治療法を開発するという新しい時代が到来す...

人工知能チュートリアル (V): Anaconda とさらなる確率理論

このシリーズの前回の記事では、まず TensorFlow の使い方を紹介しました。これは、人工知能お...

ICML 2023 優秀論文賞発表!北京大学の卒業生が作品で賞を受賞、3人の中国人作家が作品に参加、DeepMindとAppleも選出

ICML 2023 の賞品が発表されました!今年は32件の候補論文の中から6件が優秀論文賞を受賞しま...

米国保健福祉省がAIとブロックチェーンを活用してサービスを改善する方法

今日、ますます多くの国や地域が、業務効率の向上、国民へのより良いサービスの提供、そして任務遂行能力の...

これらの 8 冊の本を読んでいないのに、コンピューター ビジョンの分野で働いていると言える勇気がありますか?

コンピューター ビジョンは、写真やビデオなどのデジタル画像の側面に焦点を当てた人工知能のサブフィール...

人工知能の次の段階として、なぜインターネットの巨人に期待すべきなのでしょうか?

過去10年間を振り返ると、人工知能の進歩は「目覚ましい」ものと言えます。特に2015年にAlphaG...

2021年の3つの主要なAIトレンド:IoT、データ駆動型の意思決定、サイバーセキュリティ

この記事は、公開アカウント「Reading the Core」(ID: AI_Discovery)か...