Hello there,
If I had a DLL, how would I sort it judging by the node contents, the D way?

In C if I were to sort a piece of malloc'd memory pointing to node pointers, I would write my compare function and let qsort sort it out. In D, I tried to use std.algorithm's sort functionality to no avail, because my guess would be it only operates on arrays. This opens up another can of worms as I am not fond of VLAs and D desperately wants to know what the size is at compile time.

Let's say we this trivial implementation:

Node* get_node(DLL* list, uint index);

struct Node {
  int x;
  Node* prev, next;
};

struct DLL {
  Node* head;
  uint size;
};

Node** nodes = cast(Node**) malloc(DLL.size * (Node*).sizeof);

and I would like to sort based on Node.t, how should I tackle it, preferably without resorting to C libraries?

Reply via email to