void print_rb( const struct rb_node* node ) { //printf("print_rb\n"); if(node == NULL) return ; printf( "%s " , ((char *)node->rb_data)); if(node->rb_link[0] != NULL || node->rb_link [1] != NULL) { putchar ('(') ; print_rb(node->rb_link[0]) ; putchar (',') ; putchar (' ') ; print_rb(node->rb_link[1]) ; putchar (')') ; } }
int main() { struct avl_table* avl_tree; struct bst_table* bst_tree; struct rb_table* rb_tree; char* input_str[STR_NUM]; char buf[BUF_SIZE]; void** p[3]; int str_length; avl_tree = avl_create( str_cmp , NULL, NULL) ; bst_tree = bst_create( str_cmp, NULL , NULL); rb_tree = rb_create(str_cmp, NULL , NULL); // input string for(int i=0;i<STR_NUM;i++){ if(fgets(buf, BUF_SIZE , stdin)!= NULL) { str_length = strlen(buf)-1; input_str[i] = malloc(str_length*sizeof(char)); strncpy(input_str[i],buf,str_length); //printf("%s\n",input_str[i]); p[0] = avl_probe( avl_tree , input_str[i]); p[1] = bst_probe( bst_tree , input_str[i]); p[2] = rb_probe( rb_tree , input_str[i]); } } print_avl(avl_tree->avl_root); printf("\n"); print_bst(bst_tree->bst_root); printf("\n"); print_rb(rb_tree->rb_root); printf("\n"); return 0; }
int main() { ringbuffer_t rb(RINGBUFFER_COUNT); std::fill(rb.data_begin(), rb.data_end(), ' '); print_rb(rb); std::string elts = "ABCDE"; printf("Inserting '%s'\n", elts.c_str()); std::copy(begin(elts), end(elts), std::back_inserter(rb)); print_rb(rb); printf("Clearing '%s'\n", elts.c_str()); rb.pop_front(std::end(rb)); print_rb(rb); printf("Inserting '%s'\n", elts.c_str()); std::copy(begin(elts), end(elts), std::back_inserter(rb)); print_rb(rb); printf("Removing 3 elements\n"); // for(size_t i=0; i<3; ++i) pop_rb(rb); rb.pop_front(rb.offset(3)); print_rb(rb); elts = "abcde"; printf("Inserting '%s'\n", elts.c_str()); std::copy(begin(elts), end(elts), std::back_inserter(rb)); print_rb(rb); printf("%ld is the distance\n", std::distance(std::begin(rb), std::end(rb))); rb.clear(); rb.push_back('a'); rb.push_back('b'); rb.push_back('c'); test_ringbuffer_iterator_update(rb); // this function is empty if ringbuffer_no_overwrite is chosen, but not if ringbuffer_overwrite is chosen return 0; }