int main(int argc, char **argv) { int i,a; struct rbtree e, *t, *the_tree, *te; struct sglib_rbtree_iterator it; the_tree = NULL; for (i=1; i<argc; i++) { sscanf(argv[i],"%d", &a); e.n = a; if (sglib_rbtree_find_member(the_tree, &e)==NULL) { t = malloc(sizeof(struct rbtree)); t->n = a; sglib_rbtree_add(&the_tree, t); } } for(te=sglib_rbtree_it_init_inorder(&it,the_tree); te!=NULL; te=sglib_rbtree_it_next(&it)) { printf("%d ", te->n); } printf("\n"); for(te=sglib_rbtree_it_init(&it,the_tree); te!=NULL; te=sglib_rbtree_it_next(&it)) { free(te); } return(0); }
int benchmark() { int i; struct rbtree e, *t, *the_tree, *te; struct sglib_rbtree_iterator it; int cnt = 0; the_tree = NULL; for (i=0; i<100; i++) { e.n = array[i]; if (sglib_rbtree_find_member(the_tree, &e)==NULL) { t = malloc(sizeof(struct rbtree)); t->n = array[i]; sglib_rbtree_add(&the_tree, t); } } for(te=sglib_rbtree_it_init_inorder(&it,the_tree); te!=NULL; te=sglib_rbtree_it_next(&it)) { cnt += te->n; } for(te=sglib_rbtree_it_init(&it,the_tree); te!=NULL; te=sglib_rbtree_it_next(&it)) { free(te); } return cnt; }