Possible Case 1 : two pointers needed.
first pointer should point to the head of the linked list, and the second pointer should point to the last node of the linked list..two pointers should move in opposite direction to find out the middle element, and at that point the new node is inserted.
Possible Case 2 : one pointer is needed.
Here we first traverse the entire linked list using only one pointer and while traversing keeping track of the count of the number of elements in the linked list.
Then we traverse half of the linked list to insert the new node.
correct me if i am wrong.