一般的なBSTの作成を検討しています。COTSがないという空想はありませんが、ボイドのタイプを追跡するための最良の方法を決定しようとしています*。ノードのインターフェースは次のとおりです。
typedef struct
{
void *data;
struct TreeNode *left;
struct TreeNode *right;
} TreeNode;
ただし、追加/削除を作成するときは、比較を行う必要があるため、「データ」が指しているデータの種類を追跡する必要があります。
基本的な考え方は、列挙型Node_Typeと、2つのTreeNodeと列挙型を3番目の引数として受け取る関数compareTreeNodesを持つことです。これにより、関数はvoid*のキャスト先を決定できます。
他の/より良い考えはありますか?