Esempio n. 1
0
bst_t bst_copy(bst_t bst) {

    bst_t copy = bst_empty();

    switch (bst_type(bst)) {

    case isNull:
        bst_destroy(copy);
        return (NULL);
        break;

    case isEmpty:
        break;

    case isNotEmpty:
        copy->pair = pair_copy(bst->pair);
        copy->izq = bst_copy(bst->izq);
        copy->der = bst_copy(bst->der);
        break;
    }

    assert(bst_is_equal(bst, copy));
    /*POST*/ return (copy);

}
Esempio n. 2
0
bst_t bst_copy(bst_t bst) {
    bst_t result = bst_empty();
    if (bst != NULL) {
        result = bst_add(result, index_copy(pair_fst(bst->pair)),
                         data_copy(pair_snd(bst->pair)));
        result->right = bst_copy(bst->right);
        result->left = bst_copy(bst->left);
    }
    return result;
}
Esempio n. 3
0
dict_t dict_copy(dict_t dict) {

    dict_t copy = calloc(1, sizeof(struct _dict_t));

    copy->data = bst_copy(dict->data);
    copy->length = dict->length;

    /*Postcondition verification*/
    assert(copy != NULL);
    assert(dict_is_equal(dict, copy));

    return (copy);
}
Esempio n. 4
0
dict_t dict_copy(dict_t dict) {

    dict_t result = NULL;

    result = calloc(1, sizeof(struct _dict_t));
    assert(result != NULL);

    result->length = dict->length;
    result->data = bst_copy(dict->data);

    assert(result != NULL && dict_is_equal(result, dict));

    return result;
}