예제 #1
0
static void
test_12()
{
	slist sl;
	slist *l = &sl;

	slist_init(l);
	slist_add(l, (void *)42);
	slist_add(l, (void *)15);
	slist_add(l, (void *)14);
	slist_add(l, (void *)13);
	slist_add(l, (void *)29);
	slist_add(l, (void *)15);
	slist_add(l, (void *)25);
	slist_add(l, (void *)55);
	slist_add(l, (void *)66);
	slist_add(l, (void *)23);
	slist_qsort(l, test_12_compar);
	ASSERT((int)slist_get(l, 0) == 13);
	ASSERT((int)slist_get(l, 1) == 14);
	ASSERT((int)slist_get(l, 2) == 15);
	ASSERT((int)slist_get(l, 3) == 15);
	ASSERT((int)slist_get(l, 4) == 23);
	ASSERT((int)slist_get(l, 5) == 25);
	ASSERT((int)slist_get(l, 6) == 29);
	ASSERT((int)slist_get(l, 7) == 42);
	ASSERT((int)slist_get(l, 8) == 55);
	ASSERT((int)slist_get(l, 9) == 66);
}
예제 #2
0
static void
test_13()
{
	slist sl;
	slist *l = &sl;

	slist_init(l);
	slist_qsort(l, test_12_compar);
	/* still alive without SIGFPE */
}
예제 #3
0
파일: sort.c 프로젝트: tkrajcar/pypenn
/** A generic sort routine to sort several different
 * types of arrays, in place.
 * \param player the player executing the sort.
 * \param s the array to sort.
 * \param n number of elements in array s
 * \param sort_type the string that describes the sort type.
 */
void
do_gensort(dbref player, char *keys[], char *strs[], int n, SortType sort_type)
{
  s_rec *sp;
  ListTypeInfo *lti;
  int i;

  lti = get_list_type_info(sort_type);
  sp = slist_build(player, keys, strs, n, lti);
  slist_qsort(sp, n, lti);

  /* Change keys and strs around. */
  for (i = 0; i < n; i++) {
    keys[i] = sp[i].val;
    if (strs) {
      strs[i] = sp[i].ptr;
    }
  }

  /* Free the s_rec list */
  slist_free(sp, n, lti);

  free_list_type_info(lti);
}