私は現在、ここ(ウィキペディア)で説明されているアルゴリズムを実装しています。
この記事では、2つの主要な構造について説明しています。
- エッジの配列を含むノード
- ターゲットノードへのポインタとラベルを含むエッジ
したがって、現在、Cコードに2つの構造体がradix_node_s
あります。radix_edge_s
typedef struct radix_node_s radix_node_t;
typedef struct radix_edge_s {
radix_node_t *target_node;
char *label;
SLIST_ENTRY(radix_edge_s) next;
} radix_edge_t;
struct radix_node_s {
SLIST_HEAD(radix_edge_list_s, radix_edge_s) edges;
void *data;
};
エッジ構造を非表示にして、その包含をターゲットノードとマージできるかどうか疑問に思いました。したがって、エッジラベルはノードの新しいフィールドになります。
これを行うのに良い方法でしょうか、それとも何かが恋しいですか?