私はCでスペース効率の良いトライを実装しようとしています。これは私の構造です:
struct node {
char val; //character stored in node
int key; //key value if this character is an end of word
struct node* children[256];
};
ノードを追加すると、そのインデックスは文字のunsignedcharキャストになります。たとえば、「c」を追加したい場合は、
children[(unsigned char)'c']
新しく追加されたノードへのポインタです。ただし、この実装では、256要素のnode*配列を宣言する必要があります。私がやりたいことは:
struct node** children;
次に、ノードを追加するときは、ノードのスペースをmallocするだけで、
children[(unsigned char)'c']
新しいノードをポイントします。問題は、最初に子供用のスペースをmallocしないと、明らかにインデックスを参照できないか、それ以外の場合は大きなエラーになるということです。
だから私の質問は:それがその子への非nullポインタだけを格納するようにトライを実装するにはどうすればよいですか?