60 while ( ( succ = node + node + 1 ) < list->
elems ) {
61 if ( succ + 1 < list->
elems )
62 if ( ( list->
smaller )( ( list->
heap )[succ + 1], ( list->
heap )[succ] ) > 0 ) {
65 if ( ( list->
smaller )( ( list->
heap )[succ], ( list->
heap )[node] ) > 0 ) {
66 exch = ( list->
heap )[node];
67 ( list->
heap )[node] = ( list->
heap )[succ];
68 ( list->
heap )[succ] = exch;
86 pred = ( node - 1 ) / 2;
87 if ( ( list->
smaller )( ( list->
heap )[node], ( list->
heap )[pred] ) > 0 ) {
88 exch = ( list->
heap )[node];
89 ( list->
heap )[node] = ( list->
heap )[pred];
90 ( list->
heap )[pred] = exch;
104 int ( *
smaller )(
const void *,
const void * ) )
108 if ( !( listp = malloc(
sizeof(
toplist_t ) ) ) ) {
111 if ( !( listp->
data = malloc(
size * length ) ) ) {
115 if ( !( listp->
heap = malloc(
sizeof(
char * ) * length ) ) ) {
141 free( ( *list )->heap );
142 free( ( *list )->data );
165 }
else if ( ( list->
smaller )( element, ( list->
heap )[0] ) < 0 ) {
166 memcpy( list->
heap[0], element, list->
size );
180 for (
i = 0;
i < list->
elems;
i++ ) {
181 handle( list->
heap[
i] );
187 if ( list == NULL ) {
190 if ( ind >= list->
elems ) {
193 return ( list->
heap[ind] );
200 if ( ( list1 == NULL ) || ( list2 == NULL ) ) {
207 while ( ( i < list1->elems ) &&
208 ( i < list2->elems ) &&
static int _qsort_compare2(const void *a, const void *b)
int create_toplist(toplist_t **list, size_t length, size_t size, int(*smaller)(const void *, const void *))
void free_toplist(toplist_t **list)
void qsort_toplist(toplist_t *list, int(*compare)(const void *, const void *))
static void down_heap(toplist_t *list)
void * toplist_elem(toplist_t *list, size_t ind)
static int(* _qsort_compare1)(const void *, const void *)
void qsort_toplist_r(toplist_t *list, int(*compare)(const void *, const void *))
int insert_into_toplist(toplist_t *list, void *element)
static void up_heap(toplist_t *list, size_t node)
int compare_toplists(toplist_t *list1, toplist_t *list2)
void go_through_toplist(toplist_t *list, void(*handle)(void *))
void clear_toplist(toplist_t *list)
static int _qsort_compare3(const void *b, const void *a)
static int smaller(const void *a, const void *b)
int(* smaller)(const void *, const void *)