⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 test_yc_hashtable.c

📁 一个类STL的多平台可移植的算法容器库,主要用于嵌入式系统编程时的内存管理等方面
💻 C
📖 第 1 页 / 共 2 页
字号:
                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 + -