Beispiel #1
0
int main(){
    Rbt_tree_link a = rbt_create();
    Rbtlink it;
    srand(time(NULL));

    puts("Inserting...");
    for(i=0;i<N;i++) {
	num[i] = rand() % N;
	rbt_insert(a,num[i]);
    }
    
    printf("rbt_size: %d\n",rbt_size(a));

    printf("min value:%d   max value:%d\n",rbt_item(rbt_minimum(a)),rbt_item(rbt_maximum(a)));
    puts("Doing assert...");
    rbt_assert(a);
    puts("Traversing (inorder)...");
    rbt_inorder(a,func);

    for(i=0; i < N; i++)
	rbt_search(a, i);

    puts("Traversing (from max to min)...");
    it = rbt_maximum(a);
    for(i = rbt_size(a)-1; i >= 0; i--) {
	assert(n[i] == rbt_item(it));
	it = rbt_predecessor(it);
    }

    printf("rbt_size: %d\n",rbt_size(a));

    puts("Deleting all values...");
    int i = 0;
    for (i = 0; i < N; ++i) {
	printf("%d deleted\r", num[i]);
	rbt_delete(a, num[i]);
    }

    puts("\nDestroying rbt..");
    rbt_destroy(a);
    puts("OK!");
    return 0;
}
Beispiel #2
0
/***************************************************************************
 *
 *                   block-cache related functions
 *
 ***************************************************************************
 */
int
bc_init(void) {
    if (unlikely(blk_cache_init))
        return 1;

    if (unlikely(!enable_blk_cache))
        return 0;

    if (!(blk_cache = (block_cache_t*)MYMALLOC(sizeof(block_cache_t))))
        return 0;

    blk_cache->blks = rbt_create();
    if (!blk_cache->blks) {
        free(blk_cache);
        return 0;
    }

    lru_init();
    blk_cache_init = 1;

    return 1;
}