データ構造の中で特に重要な役割を担うキュー(Queue)とスタック(Stack)は、データの一時保管とアクセス方法に注目したコレクションです。
C#ではこれらの構造を効率的に扱うためのクラスがSystem.Collections.Generic
名前空間に用意されています。
この記事では、キューとスタックの基本的な操作方法を紹介し、それぞれの使用例を通じて、これらのデータ構造の理解を深めます。
キュー(Queue)の操作
キューは「先入れ先出し(FIFO)」の原則に基づくコレクションで、最初に追加された要素が最初に取り出されます。これは、例えばレストランでの注文リストやプリンタの印刷キューなど、実世界のシナリオで見られる動作です。
キューの作成と初期化
Queue<string> queue = new Queue<string>();
要素の追加
キューに要素を追加するにはEnqueue
メソッドを使用します。
queue.Enqueue("Alice");
queue.Enqueue("Bob");
要素の取り出し
キューから要素を取り出すにはDequeue
メソッドを使用し、最も早く追加された要素を取り出します。
string firstInQueue = queue.Dequeue(); // "Alice"を取り出す
要素の確認
キューの先頭の要素を見るだけで取り出さない場合は、Peek
メソッドを使用します。
string nextInQueue = queue.Peek(); // 次の要素 "Bob" を確認
スタック(Stack)の操作
スタックは「後入れ先出し(LIFO)」の原則に基づき、最後に追加された要素が最初に取り出されます。これは、例えばWebブラウザの戻る機能や文字列の逆順表示などに使用されます。
スタックの作成と初期化
Stack<string> stack = new Stack<string>();
要素の追加
スタックに要素を追加するにはPush
メソッドを使用します。
stack.Push("Alice");
stack.Push("Bob");
要素の取り出し
スタックから要素を取り出すにはPop
メソッドを使用します。
string lastInStack = stack.Pop(); // "Bob"を取り出す
要素の確認
スタックの最上位の要素を確認するだけで取り出さない場合は、Peek
メソッドを使用します。
string topOfStack = stack.Peek(); // 残っている最上位の要素 "Alice" を確認
まとめ
キューとスタックは、それぞれ独自の特性を持ち、多様なプログラミングシナリオで有用です。
C#においてこれらのデータ構造を効率的に使用することで、コードの複雑さを管理しやすくなり、データの流れをより明確に制御できるようになります。
この記事が、キューとスタックの基本的な操作方法を理解し、C#でのプログラミングスキルを向上させる助けとなることを願っています。
プログラムの構造に応じて適切なデータ構造を選択することが、効率的なソフトウェア開発の鍵となります。