예제 #1
0
OMX_ERRORTYPE
tiz_map_init (tiz_map_t ** app_map,
              tiz_map_cmp_f a_pf_cmp,
              tiz_map_free_f a_pf_free, tiz_soa_t * ap_soa)
{
  tiz_map_t *p_map = NULL;

  assert (NULL != app_map);
  assert (NULL != a_pf_cmp);

  if (NULL == (p_map = (tiz_map_t *) map_calloc (ap_soa, sizeof (tiz_map_t))))
    {
      return OMX_ErrorInsufficientResources;
    }


  if (NULL == (p_map->p_tree = avl_new_avl_tree (map_compare, p_map)))
    {
      map_free (ap_soa, p_map);
      p_map = NULL;
      return OMX_ErrorInsufficientResources;
    }

  p_map->size = 0;
  p_map->pf_cmp = a_pf_cmp;
  p_map->pf_free = a_pf_free;
  p_map->p_soa = ap_soa;

  *app_map = p_map;

  return OMX_ErrorNone;
}
예제 #2
0
OMX_ERRORTYPE
tiz_map_clear (tiz_map_t * ap_map)
{
  assert (NULL != ap_map);
  assert (NULL != ap_map->p_tree);

  if (ap_map->size > 0)
    {
      avl_free_avl_tree (ap_map->p_tree, map_free_key);
      ap_map->size = 0;

      if (NULL == (ap_map->p_tree = avl_new_avl_tree (map_compare, ap_map)))
        {
          return OMX_ErrorInsufficientResources;
        }
    }

  return OMX_ErrorNone;
}
예제 #3
0
파일: test.c 프로젝트: pydatastructs/avl
int
main (int argc, char ** argv)
{
  avl_tree * tree;
  unsigned int index;

  tree = avl_new_avl_tree (compare_ints, NULL);

  avl_insert_by_key (tree, (void *) 50, &index); avl_print_tree (tree, int_printer); avl_verify (tree);
  avl_insert_by_key (tree, (void *) 45, &index); avl_print_tree (tree, int_printer); avl_verify (tree);
  avl_insert_by_key (tree, (void *) 15, &index); avl_print_tree (tree, int_printer); avl_verify (tree);
  avl_insert_by_key (tree, (void *) 10, &index); avl_print_tree (tree, int_printer); avl_verify (tree);
  avl_insert_by_key (tree, (void *) 75, &index); avl_print_tree (tree, int_printer); avl_verify (tree);
  avl_insert_by_key (tree, (void *) 55, &index); avl_print_tree (tree, int_printer); avl_verify (tree);
  avl_insert_by_key (tree, (void *) 70, &index); avl_print_tree (tree, int_printer); avl_verify (tree);
  avl_insert_by_key (tree, (void *) 80, &index); avl_print_tree (tree, int_printer); avl_verify (tree);
  avl_insert_by_key (tree, (void *) 60, &index); avl_print_tree (tree, int_printer); avl_verify (tree);
  avl_insert_by_key (tree, (void *) 32, &index); avl_print_tree (tree, int_printer); avl_verify (tree);
  avl_insert_by_key (tree, (void *) 20, &index); avl_print_tree (tree, int_printer); avl_verify (tree);
  avl_insert_by_key (tree, (void *) 40, &index); avl_print_tree (tree, int_printer); avl_verify (tree);
  avl_insert_by_key (tree, (void *) 25, &index); avl_print_tree (tree, int_printer); avl_verify (tree);
  avl_insert_by_key (tree, (void *) 22, &index); avl_print_tree (tree, int_printer); avl_verify (tree);
  avl_insert_by_key (tree, (void *) 31, &index); avl_print_tree (tree, int_printer); avl_verify (tree);
  avl_insert_by_key (tree, (void *) 30, &index); avl_print_tree (tree, int_printer); avl_verify (tree);
  while (tree->length) {
    int num = 0;
    int any = 0;
    any = fscanf (stdin, "%d", &num);
    if (any < 1) {
      return 0;
    } else {
      fprintf (stdout, "deleting %d\n", num);
      avl_remove_by_key (tree, (void *) num, null_key_free);
      avl_print_tree (tree, int_printer);
      avl_verify (tree);
    }
  }
  return 0;
}