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前に必ずチェックすると安全です。
-
Pythonで連結リストを使ってスタックを実装するプログラム
連結リスト(リンクリスト)を使用してスタックデータ構造を実装する場合、要素を追加する「プッシュ(push)」操作と、要素を取り出す「ポップ(pop)」操作に対応するメソッドを定義します。 スタックは「後入れ先出し(LIFO:Last In, First Out)」という特性を持つデータ構造です。本記事の実装では、pushとpopのどちらの操作も先頭ノードのみを書き換えるため、計算量O(1)で高速に処理できる点が大きな特徴です。 以下に具体的な実装例を示します。 サンプルコード class Node: def __init__(self, da
-
Pythonによるデータ分析と可視化入門!pandas・matplotlibの使い方を解説
このチュートリアルでは、Pythonのpandasやmatplotlibなどのモジュールを使ったデータ分析と可視化の方法を学びます。Pythonはデータ分析に非常によく適した言語です。まずは以下のコマンドでpandasとmatplotlibをインストールしましょう。 pip install pandas pip install matplotlib インストールが完了すると成功メッセージが表示されます。まずpandasについて学び、その後でmatplotlibを見ていきましょう。 pandasとは pandasはPythonのオープンソースライブラリで、データ分析のための豊富なツールを提供し