#include #include #include "trie.h" typedef struct _TrieNode TrieNode; struct _TrieNode { void *data; unsigned int use_count; TrieNode *next[256]; }; struct _Trie { TrieNode *root_node; }; static void trie_free_node(TrieNode *node) { int i; if (node == NULL) return; /* First, free all subnodes */ for (i=0; i<256; ++i) { trie_free_node(node->next[i]); } /* Free this node */ free(node); } Trie *trie_new(void) { Trie *new_trie; new_trie = (Trie *) malloc(sizeof(Trie)); memset(new_trie, 0, sizeof(TrieNode)); new_trie->root_node = NULL; return new_trie; } void trie_free(Trie *trie) { /* Free the subnode, and all others by implication */ trie_free_node(trie->root_node); /* Free the trie */ free(trie); } void main(){ Trie *trie; /* Allocate and free an empty trie */ trie = trie_new(); trie_free(trie); }