How should I sort a doubly linked list the D way?

Mirjam Akkersdijk noreply at noreply.com
Tue Aug 13 14:29:35 UTC 2019


On Tuesday, 13 August 2019 at 12:34:46 UTC, bachmeier wrote:
> I'm confused by this statement. Are you referring to the qsort 
> in C's stdlib? I had never heard of using that to sort a linked 
> list, so I searched, and it is not possible.

Ah yes, maybe I should have elaborated. In C, you can just create 
an array

(1) struct Node* nodes[buf_size];

and then loop over it, filling it with

(2) nodes[i] = (DLLbuf + i * sizeof(struct Node));

subsequently calling our dear friend from stdlib

(3) qsort(nodes, buf_size, sizeof(struct Node*), 
buf_compare_function);

You can then rechain all nodes together but that's a bit out of 
scope for this thread unless you do really want me to work it out 
:)

But I was looking for a more D-specific approach to solve this, 
as it feels archaic to do it the C way. If there is anyone with a 
better one please let me know.


More information about the Digitalmars-d-learn mailing list