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

C#でPushとPop操作を使ってスタックを実装する方法

スタック(Stack)は「後入れ先出し(LIFO:Last In First Out)」と呼ばれるデータ構造で、最後に追加した要素が最初に取り出される仕組みです。C#では System.Collections 名前空間の Stack クラスを使うことで、簡単にスタックを扱うことができます。

Push操作でスタックに要素を追加する

Push() メソッドを使用すると、スタックの一番上に新しい要素を追加できます。以下は、文字を4つスタックに追加する例です。

Stack st = new Stack();

st.Push('A');
st.Push('M');
st.Push('G');
st.Push('W');

このコードを実行すると、スタックには A → M → G → W の順で要素が積まれ、最上位(Top)は W になります。

Pop操作でスタックから要素を取り出す

Pop() メソッドを使用すると、スタックの一番上にある要素を取り除き、その値を取得できます。要素を2つ取り出す場合は次のように記述します。

st.Pop();
st.Pop();

なお、Peek() メソッドを使うと、要素を削除せずに次に取り出される値を確認することができます。

PushとPopを実装した完全なサンプルプログラム

以下は、Push・Pop・Peekの各操作を組み合わせたスタック実装の完全なサンプルコードです。

using System;
using System.Collections;

namespace CollectionsApplication {
   class Program {
      static void Main(string[] args) {
         Stack st = new Stack();

         // 要素をPushして追加
         st.Push('A');
         st.Push('M');
         st.Push('G');
         st.Push('W');

         Console.WriteLine("現在のスタック:");
         foreach (char c in st) {
            Console.Write(c + " ");
         }
         Console.WriteLine();

         // さらに要素をPush
         st.Push('V');
         st.Push('H');

         // 次に取り出せる値をPeekで確認
         Console.WriteLine("次にPopできる値: {0}", st.Peek());
         Console.WriteLine("現在のスタック:");

         foreach (char c in st) {
            Console.Write(c + " ");
         }
         Console.WriteLine();

         // 要素を3つPopして削除
         Console.WriteLine("要素を削除します");
         st.Pop();
         st.Pop();
         st.Pop();

         Console.WriteLine("現在のスタック:");
         foreach (char c in st) {
            Console.Write(c + " ");
         }
      }
   }
}

実行結果

Current stack:
W G M A
The next poppable value in stack: H
Current stack:
H V W G M A
Removing values
Current stack:
G M A

処理の流れの解説

  • 初期状態: A、M、G、W をPushしたため、表示順は上から「W G M A」となります。
  • 追加後: V と H をさらにPushすると、「H V W G M A」の順になり、最上位は H です。そのため Peek() の結果は H となります。
  • 削除後: Popを3回呼び出すことで、H、V、W が順に取り除かれ、残りのスタックは「G M A」になります。

このように、Stack クラスの Push()Pop() を使えば、LIFO構造を持つスタックをC#で手軽に実装できます。要素数の取得には Count プロパティ、空かどうかの判定にも Count == 0 が利用できるため、Pop前に必ずチェックすると安全です。

  1. Pythonで連結リストを使ってスタックを実装するプログラム

    連結リスト(リンクリスト)を使用してスタックデータ構造を実装する場合、要素を追加する「プッシュ(push)」操作と、要素を取り出す「ポップ(pop)」操作に対応するメソッドを定義します。 スタックは「後入れ先出し(LIFO:Last In, First Out)」という特性を持つデータ構造です。本記事の実装では、pushとpopのどちらの操作も先頭ノードのみを書き換えるため、計算量O(1)で高速に処理できる点が大きな特徴です。 以下に具体的な実装例を示します。 サンプルコード class Node:     def __init__(self, da

  2. Pythonによるデータ分析と可視化入門!pandas・matplotlibの使い方を解説

    このチュートリアルでは、Pythonのpandasやmatplotlibなどのモジュールを使ったデータ分析と可視化の方法を学びます。Pythonはデータ分析に非常によく適した言語です。まずは以下のコマンドでpandasとmatplotlibをインストールしましょう。 pip install pandas pip install matplotlib インストールが完了すると成功メッセージが表示されます。まずpandasについて学び、その後でmatplotlibを見ていきましょう。 pandasとは pandasはPythonのオープンソースライブラリで、データ分析のための豊富なツールを提供し