C#上級

上級 C#で学ぶデータ構造|練習問題編

導入

データ構造は、プログラミングにおける基盤であり、効率的なアルゴリズムを実現するための重要な要素です。特に、C#を用いた実務においては、特定のデータ構造の理解がパフォーマンスの向上に直結します。本記事では、データ構造の一つである「ハッシュテーブル」に焦点を当て、実際の業務での利用シーンを想定した練習問題を提供します。

教科書レベルの解説(データ構造)

重要な概念の整理

ハッシュテーブルは、キーと値のペアを保持するデータ構造です。データの挿入、削除、検索を平均的にO(1)の時間で行えるため、高速なアクセスが求められるシナリオに最適です。しかし、ハッシュ関数の選定や衝突の処理方法によって、パフォーマンスが大きく変わることがあります。実務では、衝突解決の手法として「チェイニング」や「オープンアドレス法」がよく用いられます。

コード例(C#)


using System;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        Dictionary hashTable = new Dictionary();
        
        // データの挿入
        hashTable["apple"] = 1;
        hashTable["banana"] = 2;
        hashTable["orange"] = 3;

        // データの検索
        if (hashTable.TryGetValue("banana", out int value))
        {
            Console.WriteLine($"banana: {value}");
        }

        // データの削除
        hashTable.Remove("apple");

        // 全データの表示
        foreach (var item in hashTable)
        {
            Console.WriteLine($"{item.Key}: {item.Value}");
        }
    }
}

コードの行ごとの解説

  1. using System;using System.Collections.Generic; で必要な名前空間をインポートします。
  2. Dictionary hashTable = new Dictionary(); でハッシュテーブルを初期化します。
  3. hashTable["apple"] = 1; などの行で、キーと値のペアを追加します。
  4. hashTable.TryGetValue("banana", out int value) で、指定したキーの値を取得します。存在しない場合はデフォルト値が返されます。
  5. hashTable.Remove("apple"); で、指定したキーを削除します。
  6. foreach ループで、全てのキーと値を表示します。

練習問題編

以下の練習問題に取り組んでみてください。

  1. 問題1: ハッシュテーブルに新たに「grape」を追加し、値を5に設定してください。
  2. 問題2: ハッシュテーブルから「orange」を削除してください。その後、全データを表示するコードを作成してください。
  3. 問題3: ハッシュテーブルに存在しないキー「kiwi」を検索し、結果をコンソールに表示するコードを作成してください。

まとめ

  • ハッシュテーブルは、高速なデータアクセスを実現するための強力なデータ構造です。
  • 適切なハッシュ関数と衝突解決手法を選ぶことが、パフォーマンスに影響を与えます。
  • 実務において、ハッシュテーブルを用いたデータ管理は頻繁に行われます。