01/10/2018, 12:33

Thêm giá trị vào mảng 1 node của b-tree

struct btnode * insert ( int val, struct btnode *root )
{
    int i ;
    struct btnode *c, *n ;
    int flag ;
//mục đích của flag là để làm gì ? 
//tại sao ko gán thẳng giá trị vào mảng luôn tại sao phải tạo thêm biến i làm gì ?
//sau khi ra khỏi hàm thì c = NULL mục đích để làm gì ?
    flag = setval ( val, root, &i, &c ) ;
    if ( flag )
    {
        n = ( struct btnode * ) malloc ( sizeof ( struct btnode ) ) ;
        n -> count = 1 ;//bậc 5 -> count = 4 là đầy 
        n -> value [1] = i ;//gán giá trị vào mảng của cái node đó
        n -> child [0] = root ;//????
        n -> child [1] = c ;//????
        return n ;
//phần struct có mảng con trỏ quản lí các node con mục đích để làm gì ?
    }
    return root ;
}

/* sets the value in the node */
int setval ( int val, struct btnode *n, int *p, struct btnode **c )
{
    int k ;
    if ( n == NULL )
    {
        *p = val ;
        *c = NULL ;
        return 1 ;
    }
    else
    {
        if ( searchnode ( val, n, &k ) )
            printf ( "
Key value already exists.
" ) ;
        if ( setval ( val, n -> child [k], p, c ) )
        {
            if ( n -> count < MAX )
            {
                fillnode ( *p, *c, n, k ) ;
                return 0 ;
            }
            else
            {
                split ( *p, *c, n, k, p, c ) ;
                return 1 ;
            }
        }
        return 0 ;
    }
}

ai có thể giải thích dùm mình những cái mình hỏi ở trên đc ko ? phần b-tree phần lí thuyết nhìn thấy dễ mà sao thực hành khó kinh khủng.

Bài liên quan
0