All pastes #624795 Raw Edit

Someone

public text v1 · immutable
·published 2007-07-18 15:06 UTC
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);
}