Assuming your code is not a doubly-linked list, then your problem is pointing to the to-be-deleted-node. Why? When you "delete" the target node, you lose all information about that node, including where the subsequent node (if any) is located. What you need to do in singular-linked list implementations is point to the node before the target node. This way, you can delete the target node through the pointed-to node's link data-member. For instance: