Inserting a node is not hard - neither is deleting one.
Assuming you're using singly linked lists here, then in your class you'll have a pointer which points to the next instance (ie. the next node).
Diagramatically, all you do is this (assuming instance3 is the end of the list, but it makes no difference really):
Code:
instance1(ptr to instance2) instance2(ptr to instance3) instance3(ptr to NULL)
***insert***
instance1(ptr to instance 4) instance4(ptr to instance2) instance2(ptr to instance 3) instance3(ptr to NULL)
***delete***
instance1(ptr to instance4) instance4(ptr to instance3) instance3(ptr to NULL)
free(instance2)
For heavens sake
remember to free any instances you delete. If you don't, congratulate yourself on writing your first program with a serious memory leak problem.
It's only a matter of updating pointers - how hard can it be?
All any "insert" or "remove" function needs to know is the address of the pointer to the "left" (diagramatically) of where you want to insert/remove.
Once you've built a system to keep track of the pointers it's easy. Obviously you have to keep a static pointer to the first instance (or you'll lose the start of your list) and keeping a pointer to where you are now is always a good plan.