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# のデータ構造とアルゴリズムにおけるキューの簡単な分析

ブログ    
ブログ    
ブログ    

推薦する

DrivingDiffusion: 最初のサラウンドワールド モデル: BEV データとシミュレーションの新しいアイデア!

この記事は、Heart of Autonomous Driving の公開アカウントから許可を得て転...

人工知能、機械学習、アルゴリズムが施設・資産管理に与える影響

急速に進化する今日のテクノロジーの世界では、「人工知能」、「機械学習」、「アルゴリズム」などの用語が...

人工知能を使って手作業を置き換え、コストを削減し、効率を高めることは、まさに賢いことだ

「大丈夫ですよ。」 15年間工場で働いてきた「古い」労働者として、今日は人工知能についての私の見解を...

...

...

AIアプリケーションのスケールは実装が難しいが、将来的には有望である

2020年の中国の人工知能市場のレビュー2015年から2020年にかけて、人工知能市場には毎年新たな...

人工知能が教育分野に参入し「スマート教育」を創出

最先端の技術力に加え、人工知能は教育分野にも進出し始めています。北京では先日、中国・外国教師科学教育...

教育におけるAIの役割: AIが学習方法をどのように変えるか

教育分野では、人工知能(AI)の適応性が大きな注目を集めています。学習者、教育者、政策立案者はいずれ...

NLP/CVモデルは国境を越えて、ビジュアルトランスフォーマーはCNNを超えるのか?

コンピュータービジョンの分野では、畳み込みニューラルネットワーク (CNN) が常に市場を支配してき...

そうだ!機械学習を使用してビリビリの株価動向を予測する

[[418764]]この記事では、主にPythonを使用してビリビリの株価を分析する方法について説明...

スマートカーの時代において、あなたの安全とプライバシーを誰が保証するのでしょうか?

電気スマートカーの発展により、自動車はもはや独立した機械的なハードウェアボックスではなく、センシング...

マスク氏:スマートウォッチや携帯電話は時代遅れの技術、脳コンピューターインターフェースこそが未来

マスク氏はテスラがスマートウォッチやスマートフォンを開発しているという説を否定している。テスラがスマ...

7Bモデルがまた手に入ると最高ですね! 700億のLLaMA2を突破、Appleのコンピュータは

「調整」に 500 ドルかかる 70 億パラメータのモデルは、700 億パラメータの Llama 2...

2018年に人工知能はどのように発展するでしょうか?ここに8つの予測があります

編集者注:PwCは、2018年の人工知能の開発動向を調査し、8つの予測を行ったレポートを発表しました...

Google の「Model Soup」が微調整により ImageNet リストのトップに躍り出ました。方法は半ページだけ

最近、Google は強力なコンピューティング リソースで再び大きな話題を呼び、Meta AI の友...