diff options
author | pgen <p.gen.progs@gmail.com> | 2021-11-07 19:22:03 +0100 |
---|---|---|
committer | pgen <p.gen.progs@gmail.com> | 2021-11-07 19:22:03 +0100 |
commit | 240e6fb656b81486adc1f89ed8bc8399ac6c8de4 (patch) | |
tree | f8d562445ef85b14c7d3cffa10a245c3984b4a78 | |
parent | 9ebb3343c770ed039320cecabe719851a96ba419 (diff) |
Generalize the doubly linked List sort function
-rw-r--r-- | list.c | 6 | ||||
-rw-r--r-- | smenu.c | 4 | ||||
-rw-r--r-- | utils.c | 4 |
3 files changed, 8 insertions, 6 deletions
@@ -203,18 +203,20 @@ ll_partition(ll_node_t * l, ll_node_t * h, int (*comp)(void *, void *), { i = (i == NULL) ? l : i->next; - swap(i->data, j->data); + swap(&(i->data), &(j->data)); } } i = (i == NULL) ? l : i->next; - swap(i->data, h->data); + swap(&(i->data), &(h->data)); return i; } /* ======================================================== */ /* A recursive implementation of quicksort for linked list. */ +/* Based on code found here: */ +/* http://www.geeksforgeeks.org/quicksort-for-linked-list */ /* ======================================================== */ void ll_quicksort(ll_node_t * l, ll_node_t * h, int (*comp)(void *, void *), @@ -822,8 +822,8 @@ tag_comp(void * a, void * b) void tag_swap(void * a, void * b) { - output_t * oa = (output_t *)a; - output_t * ob = (output_t *)b; + output_t * oa = *(output_t **)a; + output_t * ob = *(output_t **)b; char * tmp_str; long tmp_order; @@ -69,8 +69,8 @@ interval_comp(void * a, void * b) void interval_swap(void * a, void * b) { - interval_t * ia = (interval_t *)a; - interval_t * ib = (interval_t *)b; + interval_t * ia = *(interval_t **)a; + interval_t * ib = *(interval_t **)b; long tmp; tmp = ia->low; |