For my current implementation of a linked list, I have the user of the "library" manage all memory themselves, from node allocation, to data allocation, the user is in charge. I think this is a good thing, because it lets the user decide where things are in memory, while the data structure library itself just organizes the data for the user. The data could be anywhere, including the stack if the user needs it to be. But this approach does make things a bit difficult. Creation and deletion of elements is somewhat tedious, having to allocate/free nodes by hand each time. Clearing the list is also difficult, since the memory needs to be freed as the list is cleared, something the library can't do.
Is this a good idea? Or am I chasing a fool's errand?