そうです。現代の言語における多くの「リスト」実装は、実際にはリンクされたリストであり、直接アクセスするために (反復ではなくインデックスによって) 配列またはハッシュ テーブルと組み合わせられる場合があります。
連結リスト (特に二重連結リスト) は、「実際の」データ構造で非常に一般的に使用されます。
すべての一般的な言語には、言語プリミティブ、ネイティブ テンプレート ライブラリ (C++ など)、ネイティブ ライブラリ (Java など)、またはサード パーティの実装 (おそらくオープン ソース) のいずれかとして、事前に構築されたリンク リストの実装があるとあえて言います。
そうは言っても、複雑なデータ構造のインフラストラクチャ コードを作成する際に、リンク リストの実装をゼロから作成したことが過去に何度かありました。実装を完全に制御することをお勧めする場合もあれば、特定の要件を満たすために従来の実装に「ひねり」を加える必要がある場合もあります。代替案とトレードオフを理解している限り、独自の実装をコーディングするかどうかに関しては、正しいも間違いもありません。ほとんどの場合、そして確かに C# のような非常に近代的な言語では、私はそれを避けます。
もう 1 つのポイントは、リストと配列/ベクトルまたはハッシュ テーブルを使用する必要がある場合です。あなたの質問から、ここでのトレードオフを認識していることを理解しているので、あまり詳しく説明しませんが、基本的に、主な使用法がリストを順番にトラバースすることであり、リストのサイズが大幅に異なる場合、リストは実行可能なオプションになります。もう 1 つの考慮事項は、挿入の種類です。一般的なユースケースが「途中に挿入する」場合、リストは配列/ベクトルよりも大きな利点があります。私は続けることができますが、この情報は古典的なCSの本にあります:)
明確化:私の答えは言語にとらわれず、私の理解ではリンクリストの実装を持つジェネリックには特に関係ありません。