Whenever I run this code, I try to make it delete the first node and it doesn't. if the user chooses to delete at a certain location it seems that it reads the one after it and THEN deletes that one.
If the user chooses to delete the second one, the third one gets deleted in the list.
What have I done wrong?
A testcase that does not reproduce the problem is useless (...)
A testcase consisting of randomly copy&paste'd bits of code that you thought were relevant can obviously not reproduce the problem.
put a complete, compilable code with all the necessary input to reproduce your problem
Also, explain your implementation.
It seems that you are using a circular list with a header cell