Пример #1
0
struct BTreeNode *create_BTreeNode(struct MyDB *myDB){//malloc and assign node's offset in file (in free position) 
    struct BTreeNode *node = node_malloc(myDB); 
    if (assign_BTreeNode(myDB,node)<0){
        fprintf(stderr,"ERROR: cannot assign node\n");
        node_free(myDB, node);
        return NULL;
    }
    return node;
}
Пример #2
0
//
// node allocation
//
node *newnode(enum ltype type) {
    node *n;
    n = (node *) node_malloc();
    n->type = type;
    n->marked = 0;
    next(n) = allocated;
    allocated = n;
    return n;
}
Пример #3
0
//问题原因终于找到了,我把链表整的太复杂了。。
//不过,其实可以加一个list类的,这样会省去很多的麻烦事情,长度,不过关于头节点,尾部节点
//不的不说,创建一个哨兵节点比创建一个头节点,尾节点,要省去很多事情,不用加那么多的条件限制
void insert_node(list_node *local_guard_node,int new_node_value){
	//new_node初始化并且赋值
	list_node *new_node=node_malloc();
	new_node->node_value=new_node_value;
	//这里进行节点的对应操作
	new_node->previous_node=local_guard_node->previous_node;
	local_guard_node->previous_node->next_node=new_node;
	new_node->next_node=local_guard_node;
	local_guard_node->previous_node=new_node;
}
Пример #4
0
struct BTreeNode *node_copy(struct MyDB *myDB, struct BTreeNode *node){
    struct BTreeNode *node2 = node_malloc(myDB);
    size_t t = myDB->t;
    node2->n = node->n;
    node2->leaf = node->leaf;
    node2->offset = node->offset;
    long j;
    for(j=0;j<2*t-1;j++){
        memcpy(node2->keys[j].data, node->keys[j].data, MAX_KEY_LENGTH);
        node2->keys[j].size = node->keys[j].size;
        memcpy(node2->values[j].data, node->values[j].data, MAX_VALUE_LENGTH);
        node2->values[j].size = node->values[j].size;
    }
    memcpy(node2->childs, node->childs, 2*t*sizeof(size_t));
    return node2;
}