これは厳密には技術的な質問ではありません。Cが必要なことを実行するのに十分なことを知っているので(つまり、「言語を邪魔させない」という意味で)、この質問は基本的に「どの方向」です。質問をします。
状況は次のとおりです。私は現在、高度なアルゴリズムコースを受講しています。「プログラマーとして成長する」ために、純粋なCを使用して実際の割り当てを実装する必要があります(うまく機能します。実際に行う小さな間違いはほとんどありません。あなたはそれを修正するためにあなたがしていることを完全に理解する)。実装の過程で、私は明らかに「基本的な」データ構造をゼロから実装しなければならないという問題に遭遇します。実際には、リンクリストだけでなく、スタック、ツリーなども含まれます。
このトピックのリストに焦点を当てています。これは通常、プログラムで「メイン」構造として、または他の大きな構造(たとえば、解決するハッシュツリー)の「ヘルパー」構造として多く使用する構造だからです。リンクリストを使用して競合します)。
これには、リストにさまざまなタイプの要素が格納されている必要があります。ここでは、すべてのタイプのリストを再コーディングしたくないという前提として想定しています。だから、私はこれらの選択肢を思い付くことができます:
- voidポインタのリストを作成する(ちょっとエレガントではない;デバッグが難しい)
- リストを1つだけ作成しますが、 「要素タイプ」として結合を持ち、プログラムで使用するすべての要素タイプを含みます(デバッグが簡単です。要素がすべて同じサイズでない場合はスペースを浪費します)
- プリプロセッサマクロを使用して、SGLIBのスタイルですべてのタイプのコードを再生成します。コードは本当に劇的になる可能性があります)
- あなたのアイデア/解決策
質問を明確にするために:上記のどれが最良ですか?
PS:私は基本的に学術的な文脈にいるので、業界で純粋なCを使用している人々の見方にも非常に興味があります。私は、ほとんどの純粋なCプログラマーが組み込みデバイスの分野にいることを理解しています。そこでは、私が直面しているこの種の問題は一般的ではないと思います。しかし、「現実の世界で」それがどのように行われているのかを誰かが知っているなら、私はあなたの意見に非常に興味があります。