C#
 Computer >> コンピューター >  >> プログラミング >> C#

C#のStack(スタック)の先頭にオブジェクトを挿入する方法

C#の Stack<T> において、新しいオブジェクトをスタックの一番上(先頭)に挿入するには、Push() メソッドを使用します。Pushメソッドは、指定した要素をスタックの顶部に追加し、要素数を1つ増やします。

サンプルコード1:int型のスタックに要素を挿入する

以下の例では、int型のスタックを作成し、Pushメソッドで要素を挿入した後、さらに追加の要素を挿入しています。

using System;
using System.Collections.Generic;

public class Demo {
   public static void Main() {
      Stack<int> stack = new Stack<int>();
      stack.Push(100);
      stack.Push(150);
      stack.Push(175);
      stack.Push(200);
      stack.Push(225);
      stack.Push(250);

      Console.WriteLine("スタック内の要素:");
      foreach(var val in stack) {
         Console.WriteLine(val);
      }

      Console.WriteLine("スタックの要素数 = " + stack.Count);
      Console.WriteLine("スタックに400という要素は含まれているか? = " + stack.Contains(400));

      // 新しい要素をスタックの先頭に挿入
      stack.Push(300);
      stack.Push(400);
      stack.Push(450);
      stack.Push(500);

      Console.WriteLine("スタック内の要素...(更新後)");
      foreach(var val in stack) {
         Console.WriteLine(val);
      }

      Console.WriteLine("スタックの要素数(更新後) = " + stack.Count);
   }
}

出力結果

上記のコードを実行すると、次のような出力が得られます。

スタック内の要素:
250
225
200
175
150
100
スタックの要素数 = 6
スタックに400という要素は含まれているか? = False
スタック内の要素...(更新後)
500
450
400
300
250
225
200
175
150
100
スタックの要素数(更新後) = 10

ポイント解説

  • スタックはLIFO(Last In, First Out:後入れ先出し)構造のため、最後にPushした要素が最初に表示されます。
  • Contains() メソッドを使うと、特定の要素がスタックに存在するかどうかを確認できます。この例では、挿入前の時点で400は含まれていないため「False」が返されています。
  • 4つの要素(300、400、450、500)を追加したことで、要素数が6から10に増えています。

サンプルコード2:string型のスタックに要素を挿入する

続いて、string型のスタックに文字列を挿入する例を見てみましょう。

using System;
using System.Collections.Generic;

public class Demo {
   public static void Main() {
      Stack<string> stack = new Stack<string>();
      stack.Push("A");
      stack.Push("B");
      stack.Push("C");
      stack.Push("D");
      stack.Push("E");
      stack.Push("F");
      stack.Push("G");
      stack.Push("H");

      Console.WriteLine("要素数 = " + stack.Count);
      Console.WriteLine("スタック内の要素...");
      foreach (string res in stack) {
         Console.WriteLine(res);
      }

      // 文字列"M"をスタックの先頭に挿入
      stack.Push("M");

      Console.WriteLine("スタック内の要素...(更新後)");
      foreach(var val in stack) {
         Console.WriteLine(val);
      }

      Console.WriteLine("スタックの要素数(更新後) = " + stack.Count);
   }
}

出力結果

上記のコードを実行すると、次のような出力が得られます。

要素数 = 8
スタック内の要素...
H
G
F
E
D
C
B
A
スタック内の要素...(更新後)
M
H
G
F
E
D
C
B
A
スタックの要素数(更新後) = 9

まとめ

C#の Stack<T> クラスでスタックの先頭にオブジェクトを挿入するには、Push() メソッドを使います。挿入された要素は常にスタックの一番上に配置され、既存の要素はそのまま下に保持されます。要素数は Count プロパティで確認でき、要素の存在チェックには Contains() メソッドが便利です。

  1. C#のStackクラスとは?主なプロパティとメソッドを徹底解説

    Stackクラスとは C#のStackクラスは、後入れ先出し(LIFO:Last-In, First-Out)という仕組みでオブジェクトを管理するコレクションです。スタックでは、最後に追加した要素が最初に取り出されるため、「直近に追加したデータから順番に処理したい」という場面で活用されます。 例えば、操作履歴の「元に戻す(Undo)」機能や、再帰的な処理の一時保存など、LIFO構造が自然にマッチするケースでよく使われています。 Stackクラスの主なプロパティ Count ― スタックに格納されている要素の数を取得します。 Stackクラスの主なメソッド一覧 Stackクラスには、要素

  2. C#のStackクラスでCountプロパティを使って要素数を取得する方法

    C#のStackクラスに追加された要素の数を確認したい場合には、Countプロパティを使用します。Countプロパティは、スタック内に現在格納されている要素の総数をint型の整数として返します。 StackクラスのCountプロパティとは StackはLIFO(Last In First Out:後入れ先出し)方式のコレクションであり、Pushメソッドで要素を追加し、Popメソッドで要素を取り出します。Countプロパティを参照することで、その時点でスタックにいくつの要素が存在するかを簡単に把握できます。 なお、Countプロパティの取得はO(1)の計算量で行われるため、要素数が多くても高速に