Ok. Here's the deal, to the best of my knowledge. The options are:
1)
insert-before: nth will become n+1th, then n+2nd, etc. This is simply because you insert before, and you technically have no way to alter nth from within the method, and you are not permitted alter nth from outside the method. So nth is pushed forward to succeeding positions.
2)
insert-after: nth will stay nth. Naturally, because the new elements are placed after it.
3)
insert-after and then swap the contents of data for the new node and the current nth node from within the insert method. But there are undesirable side-effects.
Basically, suppose you have:
1 2 3 4
'a' 'b' 'c' 'd'
p - q - r - s |
, where 'a'..'d' are the values and p..s are the node objects that store those values.
Now you want to insert object (node) t holding the value 'e' at position 3 in the list.
The Insert method will be implemented in two steps:
1 insert-after operation resulting in
1 2 3 4 5
'a' 'b' 'c' 'e' 'd'
p - q - r - t - s |
2 swap contents of the new inserted node and the current (i.e. *this) node
1 2 3 4 5
'a' 'b' 'e' 'c' 'd'
p - q - r - t - s |
Notice that as a side effect the method changes the value of the inserted node (in this case t) and the current nth node (in this case r) and therefore may not be desirable depending on the requirements.
Well, I guess, you can also create a wrapper class that contains pointer to node object and present this to the user. Then you will be able to alter the pointer within the Insert method. But the wrapper class will not be a node class, and the wrapper and node objects will be in many-to-one relationship (several wrappers can internally hold pointer to the same node).
EDIT: In response to your edit. Actually, if the insertion simulates inserting characters in a string like a text editor does, then fine. But still, when you insert characters the cursor remains after the inserted characters - at least in text editors. I mean, the cursor moves to forward positions like in your case, it doesn't return back to the original position before the insertion, like what you want to achieve. Just analyzing the rationale.