With one step(O(1)), we cannot jump to middle of a link list whether its singly or doubly link list.
In my opinion, the best way is :
Traverse linked list using two pointers. Move one pointer by one and other pointer by two. When the fast pointer reaches end slow pointer will reach middle of the linked list.
Lets wait for others to answer, if something we can find better :)