STK_ID_t STK_destroy_stack(STK_ID_t stack) { CDA_free(stack->stack); CDA_free(stack); return STK_NULL_ID; }
STK_ID_t STK_destroy(STK_ID_t stack){ CDA_free(stack->stack); stack->sptr=NULL; CDA_free(stack); return STK_NULL_ID; }
/*---------------------------------------------------------------------------- * Method: array_merge *---------------------------------------------------------------------------*/ static void array_merge( BYTE_t * array1, size_t low, BYTE_t * array2, size_t high, size_t element_size, SRT_CMP_PROC_p_t cmp_proc ) { BYTE_t * temp_array; int lnx, hnx, tnx; lnx = hnx = tnx = 0; temp_array = CDA_malloc( ( (int)low + (int)high ) * element_size ); while( lnx < (int)low && hnx < (int)high ) { if( cmp_proc( array1 + lnx * element_size , array2 + hnx * element_size ) < 0 ) { memcpy( temp_array + tnx * element_size, array1 + lnx * element_size, element_size ); lnx++; tnx++; } else { memcpy( temp_array + tnx * element_size, array2 + hnx * element_size, element_size ); hnx++; tnx++; } } while(lnx < (int)low) { memcpy( temp_array + tnx * element_size, array1 + lnx * element_size, element_size ); lnx++; tnx++; } while(hnx < (int)high) { memcpy( temp_array + tnx * element_size, array2 + hnx * element_size, element_size ); hnx++; tnx++; } for( lnx = 0; lnx < (int)low + (int)high; lnx++ ) memcpy( array1 + lnx * element_size, temp_array + lnx * element_size, element_size ); CDA_free( temp_array ); }
BTREE_NODE_ID_t BTREE_destroy_subtree(BTREE_NODE_ID_t node,BTREE_DESTROY_PROC_p_t destroy_proc){ if(node->left!=NULL) BTREE_destroy_subtree(node->left,destroy_proc); if(node->right!=NULL) BTREE_destroy_subtree(node->right,destroy_proc); if (node->data!=NULL) { destroy_proc(node->data); } if(node==node->tree->root) node->tree->root = NULL; else if (node->parent->left==node) node->parent->left=NULL; else if(node->parent->right==node) node->parent->right=NULL; else CDA_ASSERT(CDA_FALSE); CDA_free(node); return BTREE_NODE_NULL_ID; }
BTREE_ID_t BTREE_destroy(BTREE_ID_t tree,BTREE_DESTROY_PROC_p_t destroy_proc){ BTREE_destroy_subtree(tree->root, destroy_proc); CDA_free(tree); return BTREE_NULL_ID; }