(Not that I'm a moderator....but) I can't see that there's any harm discussing the method........
The middle of a list is halfway from the start to the finish (obvious I know, but this is quite significant)
I will assume that traversing the list once only means "you can only use one loop", not "you can only use one pointer"
Step through the list:
Pseudocode:

counter == 0;

this.element = first.element;

mid.element=this.element;

while(this.element != last.element)

{

counter++;

if(counter % 2 == 0)

{

mid = mid.next();

}

this = this.next();

}

If there is 1 item, mid is correct, if there is an even number of items, thelater item is found, if there is an odd number, the middle is found (I think)