rendered paste body#include <stdlib.h>
#include <string.h>
#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);
}