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

📄 test_yc_tree.c

📁 一个类STL的多平台可移植的算法容器库,主要用于嵌入式系统编程时的内存管理等方面
💻 C
📖 第 1 页 / 共 2 页
字号:
                    printf( "result is header!\n" );
                break;
            }
            case 8:
            {
                int key = 0;
                bbstree_iterator itr;
                printf( "please input find int key:\n" );
                scanf( "%d", &key );
                itr = bbstree_lower_bound( &tree, &key );
                if( bbstree_end(&tree) != itr )
                {
                    printf( "address: %p\n", itr );
                    printf( "data: %d\n", *((int*)bbstree_itr_deref(itr)) );
                }
                else
                    printf( "result is header!\n" );
                break;
            }
            case 9:
            {
                int key = 0;
                bbstree_iterator itr;
                printf( "please input find int key:\n" );
                scanf( "%d", &key );
                itr = bbstree_upper_bound( &tree, &key );
                if( bbstree_end(&tree) != itr )
                {
                    printf( "address: %p\n", itr );
                    printf( "data: %d\n", *((int*)bbstree_itr_deref(itr)) );
                }
                else
                    printf( "result is header!\n" );
                break;
            }
            case 10:
            {
                int key = 0;
                bbstree_pair_iterator pitr;
                printf( "please input find int key:\n" );
                scanf( "%d", &key );
                pitr = bbstree_equal_range( &tree, &key );
                if( bbstree_end(&tree) != pitr.first )
                {
                    printf( "pitr.first address: %p\n", pitr.first );
                    printf( "pitr.first data: %d\n",
                            *((int*)bbstree_itr_deref(pitr.first)) );
                }
                else
                    printf( "pitr.first is header!\n" );
                if( bbstree_end(&tree) != pitr.second )
                {
                    printf( "pitr.last address: %p\n", pitr.second );
                    printf( "pitr.last data: %d\n",
                            *((int*)bbstree_itr_deref(pitr.second)) );
                }
                else
                    printf( "pitr.last is header!\n" );
                break;
            }
            case 11:
            {
                int key = 0;
                printf( "please input erase int key:\n" );
                scanf( "%d", &key );
                bbstree_erase_pos( &tree, bbstree_find(&tree, &key) );
                break;
            }
            case 12:
            {
                int key1 = 0, key2 = 0;
                printf( "please input erase first int key:\n" );
                scanf( "%d", &key1 );
                printf( "please input erase last int key:\n" );
                scanf( "%d", &key2 );
                bbstree_erase_range( &tree, bbstree_find(&tree, &key1),
                                     bbstree_find(&tree, &key2) );
                break;
            }
            case 13:
            {
                int key = 0;
                printf( "please input erase int key:\n" );
                scanf( "%d", &key );
                printf( "erase key count: %u\n",
                        bbstree_erase_key( &tree, &key ) );
                break;
            }
            case 14:
            {
                int key = 0;
                printf( "please input insert int key:\n" );
                scanf( "%d", &key );
                printf( "address: %p\n",
                        bbstree_insert_unique_value( &tree, &key ) );
                break;
            }
            case 15:
            {
                int key1, key2 = 0;
                printf( "please input find int key:\n" );
                scanf( "%d", &key1 );
                printf( "please input insert int key:\n" );
                scanf( "%d", &key2 );
                printf( "address: %p\n",
                        bbstree_insert_unique_pos( &tree,
                                     bbstree_find(&tree, &key1), &key2 ) );
                break;
            }
            case 16:
            {
                int key = 0;
                printf( "please input insert int key:\n" );
                scanf( "%d", &key );
                printf( "address: %p\n",
                        bbstree_insert_equal_value( &tree, &key ) );
                break;
            }
            case 17:
            {
                int key1, key2 = 0;
                printf( "please input find int key:\n" );
                scanf( "%d", &key1 );
                printf( "please input insert int key:\n" );
                scanf( "%d", &key2 );
                printf( "address: %p\n",
                        bbstree_insert_equal_pos( &tree,
                                     bbstree_find(&tree, &key1), &key2 ) );
                break;
            }
            case 18:
            {
                int key1, key2 = 0;
                bbstree_iterator itr;
                printf( "please input old int key:\n" );
                scanf( "%d", &key1 );
                printf( "please input new int key:\n" );
                scanf( "%d", &key2 );
                itr = bbstree_find( &tree, &key1 );
                if( true == bbstree_replace_key_unique_pos( &tree, itr,
                                                                 &key2, NULL ) )
                    printf( "new key: %d\n", *((int*)bbstree_itr_deref(itr)) );
                else
                    printf( "replace error!\n" );
                break;
            }
            case 19:
            {
                int key1, key2 = 0;
                bbstree_iterator itr;
                printf( "please input old int key:\n" );
                scanf( "%d", &key1 );
                printf( "please input new int key:\n" );
                scanf( "%d", &key2 );
                itr = bbstree_replace_key_unique( &tree, &key1, &key2, NULL );
                if( bbstree_end(&tree) != itr )
                    printf( "new key: %d\n", *((int*)bbstree_itr_deref(itr)) );
                else
                    printf( "replace error!\n" );
                break;
            }
            case 20:
            {
                int key1, key2 = 0;
                printf( "please input old int key:\n" );
                scanf( "%d", &key1 );
                printf( "please input new int key:\n" );
                scanf( "%d", &key2 );
                bbstree_replace_key_equal_pos( &tree,
                                    bbstree_find(&tree, &key1), &key2, NULL );
                break;
            }
            case 21:
            {
                int key1, key2 = 0;
                printf( "please input old int key:\n" );
                scanf( "%d", &key1 );
                printf( "please input new int key:\n" );
                scanf( "%d", &key2 );
                bbstree_replace_key_equal( &tree, &key1, &key2, NULL );
                break;
            }
            case 22:
            {
                printf( "max size of bbstree: %u\n", bbstree_max_size() );
                break;
            }
            case 23:
            {
                printf( "bbstree size: %u\n", bbstree_size(&tree) );
                break;
            }
            case 24:
            {
                printf( "address of begin: %p\n", bbstree_begin(&tree) );
                break;
            }
            case 25:
            {
                printf( "address of end: %p\n", bbstree_end(&tree) );
                break;
            }
            case 26:
            {
                print_verify( &tree );
                break;
            }
            case 27:
            {
                int c = 0;
                printf( "chkarray(y/n)\n" );
                getchar();
                c = getchar();
                if( 'y' == c )
                    print_bread_tree( &tree );
                else
                    bbstree_foreach( &tree, print_node );
                printf( "\n" );
                break;
            }
            case 28:
            {
                int c = 0;
                printf( "reverse sequence(y/n)\n" );
                getchar();
                c = getchar();
                if( 'y' == c )
                    print_tree( &tree, false );
                else
                    print_tree( &tree, true );
                break;
            }
            default:
                break;
        }

        printf( "\npress any key to continue\n" );
/*        pool_print();*/
        getchar();
        getchar();
    }

EXIT:
    printf( "destroy tree:\n" );
    bbstree_destroy( &tree );
    printf( "\n\n\n" );
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -