예제 #1
0
파일: hw6_2.c 프로젝트: hyde1234r/hw6
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 (')') ;
	}
}
예제 #2
0
파일: hw6_2.c 프로젝트: hyde1234r/hw6
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;
}
예제 #3
0
파일: test.cpp 프로젝트: hdzz/ringbuffer-1
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;
}