Beispiel #1
0
/*
 * 打印"红黑树"
 *
 * tree       -- 红黑树的节点
 * key        -- 节点的键值 
 * direction  --  0,表示该节点是根节点;
 *               -1,表示该节点是它的父结点的左孩子;
 *                1,表示该节点是它的父结点的右孩子。
 */
static void rbtree_print(RBTree tree, Type key, int direction)
{
    if(tree != NULL)
    {
        if(direction==0)    // tree是根节点
            printf("%2d(B) is root\n", tree->key);
        else                // tree是分支节点
            printf("%2d(%s) is %2d's %6s child\n", tree->key, rb_is_red(tree)?"R":"B", key, direction==1?"right" : "left");

        rbtree_print(tree->left, tree->key, -1);
        rbtree_print(tree->right,tree->key,  1);
    }
}
Beispiel #2
0
int
main(int argc, char **argv)
{
    int *v;
    int i;

    char buf[256];
    int c;
    int ofx = 0;
    rbtree_t *rbt = rbtree_create(rbtree_cmp_keys_int32, free);
    printf("\e[1;1H\e[2J");
    printf("Enter an integer number: ");
    while((c = getchar())) {
        if (c == EOF)
            break;
        if (c == '\n') {
            buf[ofx] = 0;
            int *num = malloc(sizeof(int));
            *num = strtol(buf, NULL, 10);
            printf("Added node: %d\n\n", *num);
            rbtree_add(rbt, num, sizeof(int), num, sizeof(int));
            printf("\e[1;1H\e[2J");
            rbtree_print(rbt);
            ofx = 0;
            printf("Enter an integer number: ");
        } else {
Beispiel #3
0
void migrate_show() {
   rbtree_print(migrate_tree, fill_page_to_migrate);

   pages_array.status = malloc(sizeof(*pages_array.status)*pages_array.count);
   int ret = numa_move_pages(pid, pages_array.count, pages_array.pages, pages_array.nodes, pages_array.status, MPOL_MF_MOVE_ALL);
   printf("#%d pages migrated (result = %d %s)\n", pages_array.count, ret, move_pages_to_error_code(ret));

   int i; 
   for(i = 0; i < pages_array.count; i++) {
      printf("#%lx %d %d %s\n", (long unsigned)pages_array.pages[i], pages_array.nodes[i], pages_array.status[i], status_to_error(pages_array.status[i]));
   }
}  
Beispiel #4
0
void print_rbtree(RBRoot *root)
{
    if (root!=NULL && root->node!=NULL)
        rbtree_print(root->node, root->node->key, 0);
}