📄 test_yc_hashtable.c
字号:
hstb_erase_range( &ht, hstb_find(&ht, &key1), hstb_find(&ht, &key2) );
break;
}
case 11:
{
float key = 0;
printf( "please input erase float key:\n" );
scanf( "%f", &key );
printf( "erase count: %u\n", hstb_erase_key(&ht, &key) );
break;
}
case 12:
{
int c = 0;
hstb_iterator it;
printf( "insert array(y/n)\n" );
getchar();
c = getchar();
if( 'y' == c )
{
float key1 = 0, key2 = 0;
printf( "please input insert first float key:\n" );
scanf( "%f", &key1 );
printf( "please input insert last float key:\n" );
scanf( "%f", &key2 );
for( ; key1 < key2; ++key1 )
hstb_insert_unique( &ht, &key1 );
}
else
{
float key = 0.0;
printf( "please input insert float key:\n" );
scanf( "%f", &key );
it = hstb_insert_unique( &ht, &key );
printf( "insert node = %p\n", it.node );
printf( "table = %p\n", it.table );
}
break;
}
case 13:
{
float key;
hstb_iterator itr;
printf( "please input a float key:\n" );
scanf( "%f", &key );
itr = hstb_find( &ht, &key );
printf( "find: %p\n", itr.node );
printf( "insert: %p\n", hstb_insert_unique_pos(&ht, itr, &key).node );
break;
}
case 14:
{
int c = 0;
hstb_iterator it;
printf( "insert array(y/n)\n" );
getchar();
c = getchar();
if( 'y' == c )
{
float key1 = 0, key2 = 0;
printf( "please input insert first float key:\n" );
scanf( "%f", &key1 );
printf( "please input insert last float key:\n" );
scanf( "%f", &key2 );
for( ; key1 < key2; ++key1 )
hstb_insert_equal( &ht, &key1 );
}
else
{
float key = 0.0;
printf( "please input insert float key:\n" );
scanf( "%f", &key );
it = hstb_insert_equal( &ht, &key );
printf( "insert node = %p\n", it.node );
printf( "table = %p\n", it.table );
}
break;
}
case 15:
{
float key;
hstb_iterator itr;
printf( "please input a float key:\n" );
scanf( "%f", &key );
itr = hstb_find( &ht, &key );
printf( "find: %p\n", itr.node );
printf( "insert: %p\n", hstb_insert_equal_pos(&ht, itr, &key).node );
break;
}
case 16:
{
float oldkey = 0, newkey = 0;
hstb_iterator it;
printf( "please input replace float key:\n" );
scanf( "%f", &oldkey );
printf( "please input new float key:\n" );
scanf( "%f", &newkey );
it = hstb_find( &ht, &oldkey );
if( true == hstb_replace_key_unique_pos(&ht, it, &newkey, NULL) )
printf( "after key: %f\n", *((float*)hstb_itr_deref(it)) );
else
printf( "replace error!\n" );
break;
}
case 17:
{
float oldkey = 0, newkey = 0;
hstb_iterator it;
printf( "please input replace float key:\n" );
scanf( "%f", &oldkey );
printf( "please input new float key:\n" );
scanf( "%f", &newkey );
it = hstb_replace_key_unique( &ht, &oldkey, &newkey, NULL );
printf( "after key: %f\n", *((float*)hstb_itr_deref(it)) );
break;
}
case 18:
{
float oldkey = 0, newkey = 0;
hstb_iterator it;
printf( "please input replace float key:\n" );
scanf( "%f", &oldkey );
printf( "please input new float key:\n" );
scanf( "%f", &newkey );
it = hstb_find( &ht, &oldkey );
hstb_replace_key_equal_pos( &ht, it, &newkey, NULL );
printf( "after key: %f\n", *((float*)hstb_itr_deref(it)) );
break;
}
case 19:
{
float oldkey = 0, newkey = 0;
printf( "please input replace float key:\n" );
scanf( "%f", &oldkey );
printf( "please input new float key:\n" );
scanf( "%f", &newkey );
hstb_replace_key_equal( &ht, &oldkey, &newkey, NULL );
break;
}
case 20:
{
hstb_iterator it = hstb_begin( &ht );
printf( "node = %p\n", it.node );
printf( "table = %p\n", it.table );
break;
}
case 21:
{
printf( "hash table size: %u\n", hstb_size( &ht ) );
break;
}
case 22:
{
printf( "max size: %u\n", hstb_max_size() );
break;
}
case 23:
{
printf( "max chain size: %u\n", hstb_max_chain_count() );
break;
}
case 24:
{
printf( "table size: %u\n", hstb_table_size(&ht) );
printf( "chain count: %u\n", hstb_chain_count(&ht) );
break;
}
case 25:
{
size_t index = 0;
printf( "please input index:\n" );
scanf( "%u", &index );
printf( "elements of chain[%u]: %u\n",
index, hstb_chain_size(&ht, (size_t)index) );
break;
}
case 26:
{
float key;
printf( "please input a float key:\n" );
scanf( "%f", &key );
printf( "index: %u\n", (size_t)hstb_key_chain( &ht, &key ) );
break;
}
case 27:
printf( "load factor = %f\n", hstb_load_factor(&ht) );
break;
case 28:
printf( "max load factor = %f\n", hstb_get_max_load_factor(&ht) );
break;
case 29:
{
float f;
printf( "please input new load factor:\n" );
scanf( "%f", &f );
hstb_set_max_load_factor( &ht, f );
break;
}
case 30:
{
print_table( &ht );
break;
}
case 31:
{
print_sequence( &ht );
break;
}
default:
break;
}
printf( "\npress any key to continue\n" );
/* pool_print();*/
getchar();
getchar();
}
EXIT:
printf( "destroy hashtable:\n" );
hstb_destroy( &ht );
printf( "\n\n\n" );
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -