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