Im having problems in managing the list itself.
Trying to figure out the steps needed to manage the head/tail/next/previous pointers for all the operations for a linked list can get a little mind boggling after a while.
My choice for solving problems like this is the draw the sequence of steps that are needed for each operation (Add, Delete, Insert), with lines showing where each pointer points to at each step. Otherwise it's easy to get yourself in a muddle.