int main() { trie_node *root = NULL; trie_pair *entry; root = trie_insert(root, pair_new("dog\0", 2)); root = trie_insert(root, pair_new("cat\0", 3)); root = trie_insert(root, pair_new("top\0", 4)); root = trie_insert(root, pair_new("rat\0", 5)); trie_show(root, 0); entry = trie_search(root, "cat"); trie_delete(root, "dog"); entry = trie_search(root, "dog"); }
void *test(void *data) { int i; pair_t pop[POP_SIZE]; memset(pop, 0, sizeof(pop)); for (i = 0; i < MUTATE_CNT; ++i) { int t = rand() % POP_SIZE; switch (rand() % (i > GROW_LIMIT? 5 : 3)) { case 0: case 3: if (pop[t]) pop[t] = pop[t]->car; break; case 1: case 4: if (pop[t]) pop[t] = pop[t]->cdr; break; case 2: pop[t] = pair_new(pop[rand() % POP_SIZE], pop[rand() % POP_SIZE]); break; } if (rand() % 8 == 1) pair_check_rec(pop[rand() % POP_SIZE]); } return data; }
static bool seek_ahead(Cmdline *cmdline, QUEUE *stack, Token *token) { Token *next = (Token*)utarray_next(cmdline->tokens, token); if (!next || stack_head(stack)->var.v_type != VAR_LIST) return false; char *str = token_val(next, VAR_STRING); if (str && str[0] == ':') { push(pair_new(cmdline), stack, token->start); Pair *p = stack_head(stack)->var.vval.v_pair; if (cmdline->line[token->end+1] == ':') p->scope = true; p->key.symb = token->symb; //copy variable symb return true; } return false; }