Ejemplo n.º 1
0
int main(void) {
    Trie *trie = NULL;
    Trie_init(&trie);

    /* find on empty trie. */
    assert(!Trie_find(trie, (ts){0}, 1));

    /* Add and find length 1. */
    assert(!Trie_add(trie, (ts){0}, 1));
    assert(Trie_find(trie, (ts){0}, 1));
    assert(!Trie_find(trie, (ts){1}, 1));

    /* Add previously added. */
    assert(Trie_add(trie, (ts){0}, 1));

    /* Add and find length 3 */
    {
        assert(Trie_find(trie, (ts){0}, 1));
        assert(!Trie_find(trie, (ts){0, 1}, 2));
        assert(!Trie_find(trie, (ts){0, 1, 2}, 3));

        assert(!Trie_add(trie, (ts){0, 1, 2}, 3));

        assert(Trie_find(trie, (ts){0}, 1));
        assert(!Trie_find(trie, (ts){0, 1}, 2));
        assert(Trie_find(trie, (ts){0, 1, 2}, 3));
    }

    return EXIT_SUCCESS;
}
Ejemplo n.º 2
0
void find_and_print(Trie_typ* trie, char* to_find)
{
	StringNode_typ* results = Trie_find(trie, to_find);
	StringNode_typ* iter = results;

	int max = 10;
	iterate(iter) {
		if (iter->value) {
			printf("%s\n", iter->value);
			if (--max < 0) {
				break;
			}
		}
	}

	StringNode_free(results);
}