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

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

コンピュータ サイエンスでは、スタックは、テーブルの末尾での挿入または削除操作に制限された線形テーブルです。後入れ先出しの原則に従ってデータを格納します。最初に入力されたデータはスタックの一番下にプッシュされ、最後のデータはスタックの一番上にあります。データを読み取る必要がある場合は、スタックの上からポップされます(最後のデータが最初に読み出されます)。これは、一方の端でのみ挿入および削除できる特殊な線形リストです。アイテムはバケツに積み重ねられます。最初に積み重ねられるものは一番下で押され、次に1つずつ積み重ねられます。物を取り出すときは、上から1つずつしか取り出せません。積み重ねと取り出しはどちらも上部で行われ、下部は一般に固定されています。

C# のデータ構造とアルゴリズムのスタックは、アイテムを積み重ねるバケツに似たデータ構造です。削除と挿入の端はスタックの上部と呼ばれ、もう一方の端はスタックの下部と呼ばれます。挿入は一般にプッシュ (PUSH) と呼ばれ、削除はポップ (POP) と呼ばれます。 スタックは、Last In First Out テーブル (LIFO テーブル) とも呼ばれます。

C# データ構造とアルゴリズム スタック 1. プッシュ アルゴリズム

◆TOP ≥ n の場合はオーバーフロー情報を与え、エラー処理を行う(スタックにプッシュする前に、まずスタックがいっぱいかどうかをチェックする。いっぱいであればオーバーフロー発生、いっぱいでなければ②を行う);

◆TOP=TOP+1 を設定します(スタックポインタが 1 増加し、スタックアドレスを指します)。

◆S(TOP)=X, 終了(Xはスタック上の新しい要素)

C# データ構造とアルゴリズム スタック 2、Pop (POP) アルゴリズム

◆TOP≤0の場合はアンダーフローメッセージが表示され、エラー処理されます(スタックをポップする前にスタックが空かどうかを確認します。空の場合はアンダーフロー、空でない場合は②として処理されます)。

◆X=S(SOP)、(スタックをポップした後の要素がXに割り当てられます)

◆TOP=TOP-1、終了(スタックポインタが1減少し、スタックの先頭を指します)。

C# データ構造とアルゴリズム スタック実装インターフェイス:

  1. 公共 インターフェースIStack<T>
  2. {
  3.     さ();
  4.     ブール型IsEmpty();
  5.      voidクリア();
  6.      void Push(T アイテム);
  7. Tポップ();
  8. T GetPopValue();
  9. }

次のコードは、C# データ構造とアルゴリズム スタックを実装するクラスです。

  1. 公共 クラスJStack<T> : IStack<T>
  2. {
  3.     プライベート 整数サイズ;
  4.     プライベートT[]アイテム;
  5.     プライベート 整数トップ;
  6.  
  7.     パブリックT this [ intインデックス]
  8. {
  9.          get { return item[index]; }
  10.         設定{ 項目[インデックス] = 値; }
  11. }
  12.  
  13.     公共  intサイズ
  14. {
  15.         取得{サイズを返す; }
  16.         設定{ サイズ = 値; }
  17. }
  18.  
  19.     公共  intトップ
  20. {
  21.         取得{先頭に戻る; }
  22. }
  23.  
  24.  
  25.  
  26.     パブリックJStack( int長さ)
  27. {
  28. 上 = -1;
  29. サイズ = 長さ;
  30. アイテム =新しいT[長さ];
  31. }
  32.  
  33.     公共 整数長さ()
  34. {
  35.         先頭 + 1を返します
  36. }
  37.  
  38.     公共 ブール型IsEmpty()
  39. {
  40.         戻り値(top == -1);
  41. }
  42.  
  43.     公共  voidクリア()
  44. {
  45. 上 = -1;
  46. }
  47.  
  48.     公共  void Push(T アイテム)
  49. {
  50.          (トップ < サイズ - 1)の場合
  51. {
  52. item[++top] = アイテム;
  53. }
  54. }
  55.  
  56.     パブリックT ポップ()
  57. {
  58. T tmp =デフォルト(T);
  59.          if (!IsEmpty())
  60. {
  61. tmp = アイテム[トップ];
  62. }
  63.          tmpを返します
  64. }
  65.  
  66.     パブリックT GetPopValue()
  67. {
  68.         空の場合()
  69. {
  70.             投げる 新しいArgumentNullException( "スタックはすでに空です" "項目 Null" );
  71. }
  72.         アイテム[トップ]を返す;
  73. }
  74. }

以下は、C# データ構造とアルゴリズム スタックのテストです。

  1. 試す 
  2. {
  3. JStack<文字列> js =新しいJStack<文字列>(20);
  4. Console.WriteLine( "------スタックが初期化されました----" );
  5. コンソールに行を書き込む。
  6. Console.WriteLine(js.IsEmpty().ToString());
  7. js.Push( "A" );
  8. js.Push( "B" );
  9. js.Push( "C" );
  10. js.Push( "D" );
  11. Console.WriteLine( "------データがスタックに挿入されました----" );
  12. コンソールに行を書き込む。
  13. Console.WriteLine(js.IsEmpty().ToString());
  14.  
  15. Console.WriteLine( "------スタックの一番上のデータを取得します----" );
  16. Console.WriteLine(js.GetPopValue().ToString());
  17.  
  18. Console.WriteLine( "------スタックをクリア----" );
  19. js.Clear();
  20. Console.WriteLine(js.GetPopValue().ToString());
  21. コンソールの行を読み取ります。
  22. }
  23. catch (例外例)
  24. {
  25. Console.WriteLine(例:Message);
  26. コンソールの行を読み取ります。
  27. }

オブジェクトの順序を逆にする必要がある場合は、オブジェクトをスタックに順番に配置し、スタックから取り出すことで機能が実現されます。

これで、C# のデータ構造とアルゴリズムのスタックの紹介は終わりです。C# のデータ構造とアルゴリズムのスタックの学習に役立つことを願っています。

<<:  C#アルゴリズムに関する面接の質問の簡単な分析

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

ブログ    
ブログ    

推薦する

人工知能はデータセンター業界にどのような影響を与えるでしょうか?

人工知能(AI)、特にChatGPTなどの生成型AI製品の開発は、過去1年間、主要メディアの見出しを...

...

...

AIでAIを守る、次世代のAIベースのサイバー脅威ソリューション

多くの関係者は、AI が「悪」の力にもなり得るという事実を受け入れ始めています。関連する海外メディア...

...

...

開発者にとって必須の 5 つの AI ツール、お見逃しなく!

今日のペースが速く、競争が激しい時代では、作業効率と製品品質の向上が特に重要になっています。ソフトウ...

...

VB.NET 暗号化アルゴリズムの基本概念の分析

プログラミング言語の場合、その機能性を評価する上で最も重要な要素の 1 つはセキュリティ評価です。 ...

2021年のAIに関する10の大胆な予測の科学的分析 学術見出し

2020年は忘れられない年です。今年に入って、新型コロナウイルスの感染拡大に伴い、人工知能(AI)が...

信用デフォルト予測モデリングでは、ランダムフォレストが 91.1% でトップに!

みなさんこんにちは、ピーターです〜この記事は、Kaggle での機械学習の実践的なケーススタディです...

AI業界は依然として寒い冬に:資金調達規模はピーク時の半分以下、上場ブームは倒産の波を伴う

[[351301]]資本の冬を経験した後、疫病のブラックスワンが次々と起こり、AI初期に蓄積された非...

30年の沈黙と60年の経験を経て、「人工知能」の過去と現在とは?

30年以上沈黙していた「人工知能」という言葉は、ここ2年で非常に人気が高まり、テクノロジー企業の主...