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); }
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; }
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); }
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; }