Beispiel #1
0
STK_ID_t STK_destroy_stack(STK_ID_t stack)
{
    CDA_free(stack->stack);
    CDA_free(stack);

    return STK_NULL_ID;
}
Beispiel #2
0
STK_ID_t STK_destroy(STK_ID_t stack){
	CDA_free(stack->stack);
	stack->sptr=NULL;
	CDA_free(stack);

	return STK_NULL_ID;
}
Beispiel #3
0
/*----------------------------------------------------------------------------
 * 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 ); 
}
Beispiel #4
0
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;
}
Beispiel #5
0
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;
}