summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorpgen <p.gen.progs@gmail.com>2021-11-07 19:22:03 +0100
committerpgen <p.gen.progs@gmail.com>2021-11-07 19:22:03 +0100
commit240e6fb656b81486adc1f89ed8bc8399ac6c8de4 (patch)
treef8d562445ef85b14c7d3cffa10a245c3984b4a78
parent9ebb3343c770ed039320cecabe719851a96ba419 (diff)
Generalize the doubly linked List sort function
-rw-r--r--list.c6
-rw-r--r--smenu.c4
-rw-r--r--utils.c4
3 files changed, 8 insertions, 6 deletions
diff --git a/list.c b/list.c
index 5a1f2e1..71d03f3 100644
--- a/list.c
+++ b/list.c
@@ -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 *),
diff --git a/smenu.c b/smenu.c
index d468653..3a19244 100644
--- a/smenu.c
+++ b/smenu.c
@@ -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;
diff --git a/utils.c b/utils.c
index f62cbf2..5b384c4 100644
--- a/utils.c
+++ b/utils.c
@@ -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;