I think binary search can be applied to linked lists (even the singly ones). Say I have a SLL

1 → 3 → … → 100 and I want to insert 2. Then I can traverse till the mid point taking N/2 time (assuming I maintain a global count variable) and the value there (50) is greater than than the value to be inserted (2) so I keep the left pointer as is and make the right pointer point to node containing 49.

Effective SLL now is: 1 → 3 → … → 49.

Again same steps, the time to traverse till mid (25) is (N/2)/2 = N/4.

So on and so forth the effective time to find the location to insert 2 will be N/2 + N/4 + N/8 .. = $\log _{2} n$. Inserting a new node is O(1) anyways.