私はこれが私の構造体である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];
};
、それのインデックスは、文字のunsigned char型キャストです。たとえば、「c」を追加する場合は、
children[(unsigned char)'c']
は、新しく追加されたノードへのポインタです。しかし、この実装では、256要素のノード*配列を宣言する必要があります。私は何をしたいです:
struct node** children;
と、ノードのためだけのmallocスペース、ノードを追加し、新しいノードに
children[(unsigned char)'c']
ポイントを持っています。問題は、子供のための空間をmallocしないと、明らかにインデックスを参照できないか、それは大きな誤りです。
だから私の質問は:どのようにそれは子供に非nullポインタを格納するようにトライを実装するのですか?
なぜ 'children'がNULLかどうかをチェックしないのはなぜですか? – Drakosha
あなたは**無指向性有向グラフ**を考えましたか? http://en.wikipedia.org/wiki/Directed_acyclic_word_graph –