You have a visit_ptr_node_type which is really just a visit_node_type *

The visit_ptr_node_type is what he's talking about. You'll notice that in my restructured code I don't hide pointers behind a typedef.

And you're right about changing some variable names but not doing anything significant. My goal was to make your code more readable without changing its functionality. If I changed the way it works then I couldn't be much help to you in solving your problem.

I didn't fix the problem in the code I posted. I just posted a "more readable" version of your code (to me anyway). I explained what your problem is though. You shouldn't be losing your list, you should be getting a segfault. Did you try only printing 2 items instead of 3 after calling delete(anchor) like I suggested?